转置R表

时间:2018-09-17 19:19:36

标签: r

我正在尝试转置从列表列表中创建的表。 每个嵌套列表都具有以下格式:

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列。

有人看到我在做什么错吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

让我们使用do.callrbindlapply

## 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的列表,我们希望将数据“堆叠”在一起。