Фреймы данных с данными переменной длины в R / Splus - PullRequest
4 голосов
/ 17 марта 2011

Следующее работает нормально в R

myarray <- as.array(list(c(5,5), 9, c(4,2,2,4,6)))
mydf    <- as.data.frame(myarray)

Но в Splus это не так --- выдает сообщение об ошибке:

Problem in data.frameAux.list(x, na.strings = na.st..: arguments imply differing 
 number of rows: 2, 1, 5 
Use traceback() to see the call stack

В: Что происходит?Как я могу заставить это работать в Splus?

РЕДАКТИРОВАТЬ: я должен прояснить, почему я прохожу через этот странный процесс обработки list как data.frame.Это потому, что я в конечном итоге хотел бы сделать что-то вроде следующего в Splus:

mypos <- timeSeq("1/1/08", "1/3/08", by = "days")
myts <- timeSeries(data = mydf, positions = mypos)

Лучшим возможным вариантом сейчас, я думаю, было бы создать список вроде:

mytshack <- list(mypos, as.list(myarray))

Но это неуклюже, и я хотел бы получить функциональность timeSeries, если возможно

1 Ответ

3 голосов
/ 17 марта 2011

ИЗМЕНЕНО после комментариев.

SPlus не допускает векторы в качестве значений в кадре данных, в отличие от R. Для этого вам придется использовать список, а я бы просто сделал:

day <- c("1/1/2000","1/2/2000","1/3/2000")
names(myarray) <- day

, который позволяет получить доступ к данным обычным способом:

> myarray[["1/1/2000"]]
[1] 5 5

Если вы получили подтверждение, это именно то, что вам нужно, и дополнительную информацию о наборе данных, попробуйте это:

myarray <- as.array(list(c(5,5), 9, c(4,2,2,4,6)))
mydf <- as.matrix(myarray)
colnames(mydf) <- "myarray"


mypos <- timeSeq("1/1/08", "1/3/08", by = "days")
myts <- timeSeries(data = mydf, positions = mypos)
seriesData(myts)

Это работает в SPlus. timeSeries нужен прямоугольный объект, а as.rectangular не может работать с массивами. Так что преобразование в матрицу подойдет. Тем не менее, я бы просто использовал пакет timeSeries в R вместо того, чтобы взламывать его вместе в SPlus.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...