【发布时间】:2017-02-28 16:41:47
【问题描述】:
我有一个字符串列表如下:
> ll
[[1]]
[1] "2" "1"
[[2]]
character(0)
[[3]]
[1] "1"
[[4]]
[1] "1" "8"
最长的列表长度为 2,我想从这个列表中构建一个包含 2 列的数据框。还将列表中的每个项目转换为数字或字符(0)的 NA 的奖励积分。我尝试使用 mapply() 和 data.frame 转换为数据框并填充 NA,如下所示。
# Find length of each list element
len = sapply(awards2, length)
# Number of NAs to fill for column shorter than longest
len = 2 - len
df = data.frame(mapply( function(x,y) c( x , rep( NA , y ) ) , ll , len))
但是,使用上面的代码,我没有得到一个包含 2 列(和 NA 作为填充符)的数据框。
感谢您的帮助。
【问题讨论】:
-
sapply(ll, '[', 1:max(lengths(ll))) -
@d.b,列数是已知的,所以你可以用
length<-代替:t(sapply(ll, `length<-`, 2))。