2013-07-15 4 views
0

У меня есть цикл for, который хранит в списке одну дату и одно значение после некоторых вычислений. Я хотел бы создать таблицу с двумя столбцами (дата, стоимость), но когда я извлечь значения из списка я не могу сохранить формат даты:сохранить формат при извлечении из списка в R

n <- 5 

x <- factor(1:3,levels=1:3,labels=c('a','b','c')) 
dates <- as.Date(c('2000-01-01','2001-01-01','2002-01-01')) 

mylist <- list() 

for (i in 1:n) { 

    #Some operations 

    mylist[[i]] <- list(sample(dates,1),as.numeric(sample(x,1))) 

} 

z <- do.call(cbind,mylist) 

ответ

0

Вам нужно изменить структуру данных на тот, который может на самом деле имеют разные типы данных (т.е. кадр данных), а затем rbind их вместе:

for (i in 1:n) { 

    #Some operations 

    mylist[[i]] <- data.frame(sample(dates,1),as.numeric(sample(x,1))) 

} 

z <- do.call(rbind,mylist) 

проблема в коде было то, что cbind операция по принуждению к list к matrix (что является поведением по умолчанию rbind/cbind), который может содержать только o ne тип данных.

+0

спасибо, что я 'list' мог обрабатывать и другие типы данных – nopeva

+0

Да, но проблема возникает, когда вы принуждаете ее через' cbind'. Это превращает его в «матрицу». Посмотрите, что такое ваш «mylist» и что делает «do.call». – Henrik