r - 将向量列表转换为数据框

标签 r list vector dataframe

我正在尝试将向量列表(本质上是一个多维数组)转换为数据框,但每次尝试都会得到意想不到的结果。

我的目标是实例化一个空白列表,在 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/

相关文章:

r - 为R中的不同点集设置自己的颜色和形状比例

r - 为什么我的 ROC 曲线看起来像 V 形?

r - 使用 LAPACK svd 的负奇异值

python - 如何用for循环影响列表的显示?

c++ - XLL:将 xloper 转换为 vector<double>

c++ - 将 vector 上的 std::find_if 转换为循环的最佳方法是什么?

r - 使用 na.locf 为特定国家/变量对扩展最后观察到的值

c# - 如何在具有多个根的 C# 中反序列化 XML?

c# - 从 c# 中的 list<object> 列表中删除重复的内部列表

c++ - STL排序算法