我正在尝试将向量列表(本质上是一个多维数组)转换为数据框,但每次尝试都会得到意想不到的结果。
我的目标是实例化一个空白列表,在 for 循环中填充它,其中包含有关循环迭代的信息的向量,然后在完成后将其转换为数据帧。
> vectorList <- list()
> for(i in 1:5){
+ vectorList[[i]] <- c("number" = i, "square root" = sqrt(i))
+ }
> vectorList
输出:
> [[1]]
> number square root
> 1 1
>
> [[2]]
> number square root
> 2.000000 1.414214
>
> [[3]]
> number square root
> 3.000000 1.732051
>
> [[4]]
> number square root
> 4 2
>
> [[5]]
> number square root
> 5.000000 2.236068
现在我希望它成为一个包含 2 个变量的 5 个观察值的数据框,但试图从“vectorList”创建一个数据框
numbers <- data.frame(vectorList)
导致 5 个变量的 2 个观察结果。
奇怪的是,它甚至不会被 reshape2 强制(我知道这将是一个糟糕的工作,但我试过了)。
任何人有任何见解?
最佳答案
您可以使用:
as.data.frame(do.call(rbind, vectorList))
或者:
library(data.table)
rbindlist(lapply(vectorList, as.data.frame.list))
或者:
library(dplyr)
bind_rows(lapply(vectorList, as.data.frame.list))
关于r - 将向量列表转换为数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43662457/