我有像下面的 SampleData 这样的数据,其中有不同长度的列表,我想将它们合并到像下面的所需结果这样的数据框中。我尝试使用 qpcR 包中的 lapply 和 cbind.na (如下例所示),但由于某种原因,它不允许我将结果转换为数据帧。如果我只使用了两个列表和 cbind.na ,它将组合它们并将 NA 添加到末尾,就像我想要的那样,但是当我尝试在 lapply 中使用它时,它只会将它们保留为不同长度列表的列表。非常感谢任何提示。
SampleData<-list(list(1,2,3),list(1,2),list(3,4,6,7))
Desired Result:
structure(list(V1 = c(1, 2, 3, NA), V2 = c(1, 2, NA, NA), V3 = c(3,
4, 6, 7)), .Names = c("V1", "V2", "V3"), row.names = c(NA, -4L
), class = "data.frame")
Example Code:
lapply(SampleData,qpcR:::cbind.na)
最佳答案
这是一个修改后的版本,带有 length<-
作业
setNames(do.call(cbind.data.frame, lapply(lapply(SampleData, unlist),
`length<-`, max(lengths(SampleData)))), paste0("V", 1:3))
# V1 V2 V3
#1 1 1 3
#2 2 2 4
#3 3 NA 6
#4 NA NA 7
关于r - 将不同长度的列表组合成数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42774843/