我正在尝试转置从列表列表中创建的表。 每个嵌套列表都具有以下格式:
list(storm_name=NA, storm_level=NA, file_date=NA, file_time=NA,
date=NA, time=NA, actual_or_forecast=NA, lat=NA, long=NA, max_wind=NA,
gusts=NA, eye_speed=NA, eye_location=NA, storm_end=NA)
简而言之,每行中有14个元素。
storm_df <- as.data.frame(matrix(unlist(list1), nrow=length(unlist(list1[1]))))
到目前为止,我上面编写的代码创建的表的方向是14行x N(内部列表数)列,而我希望它是N行x 14列。
有人看到我在做什么错吗?
谢谢!
答案 0 :(得分:3)
让我们使用do.call
,rbind
和lapply
:
## data
l1 <- list(storm_name=NA, storm_level=NA, file_date=NA, file_time=NA,
date=NA, time=NA, actual_or_forecast=NA, lat=NA, long=NA, max_wind=NA,
gusts=NA, eye_speed=NA, eye_location=NA, storm_end=NA)
big_list <- list(l1, l1, l1)
## make data.frame
do.call('rbind', lapply(big_list, data.frame))
逐步执行此操作,首先在lapply
上运行big_list
,因此对于big_list
中的每个项目,我们创建一个data.frame
。尝试data.frame(l1)
查看每次通话的结果。
然后我们使用do.call('rbind', ...)
,因为lapply
返回一个data.frame
的列表,我们希望将数据“堆叠”在一起。