我有一个数字向量列表的列表。我想要:
- 对每个向量求和
- 将每个内部标量列表转换为向量
- 将这些向量组合成一个数据框,其中向量是行
我拼凑了下面的代码,但是似乎这很笨拙,不是R的方式。我怀疑如果使用rapply
和四个步骤,那么我做错了什么(不是在结果方面,而是在效率和理解方面)。有没有正确的方法来执行此操作?
dat1 <- list(list(1:2, 3:4), list(5:6, 7:8))
dat2 <- rapply(dat1, sum, how="list")
dat3 <- lapply(dat2, unlist)
dat4 <- do.call(rbind, dat3)
dat5 <- data.frame(dat4)
所需输出为:
> dat5
X1 X2
1 3 7
2 11 15
> class(dat5)
[1] "data.frame"
matrix
替换do.call
,unlist
,lapply
和rbind
。更不用说由<-
制作的所有副本了。即使仅使用as.data.frame
也比data.frame
更快。 - David Arenburg