将 sapply() 返回的列表转换为 data.frame

Convert list returned by sapply() to a data.frame

我有一个由 sapply() 返回的列表

$my.list <- sapply()  
$my.list  
"var1" "var2" "var3"  
 1.1    2.5    3.2

理想的结果是将my.list转化为数据框df:

$df  
"var1"  1.1  
"var2"  2.5  
"var3"  3.2

我已经尝试 'subset' my.list 的每一行如下:

$p1 <- names(my.list)  
$p1  
   "var1" "var2" "var3"  
$p2 <- as.vector(my.list)
$p2 
   1.1 2.5 3.2

但后来我运气不好 cbind/rbind-ing 将这些行向量放入数据框中。有 thoughts/suggestions 吗?谢谢

如果我理解正确你的问题,你可以使用stack。在这里,我创建了一个命名的 "list"(实际上是一个向量),您可能会从 sapply 中得到它。请注意,即使您的数据实际上是一个列表,这仍然有效。

> my.list <- setNames(1:3, letters[1:3])
> my.list
a b c 
1 2 3
> stack(my.list)
  values ind
1      1   a
2      2   b
3      3   c

不是 100% 这就是你想要的,这是你的意思吗?

my.list <- sapply(letters[1:3], toupper)
data.frame(t(my.list))

(下次请提供您的意见以便我们更容易回答)

p1p2 绑定到 df 类似于问题 #12787551

解决方法如下: 删除 p1 中的水平(因子)

$p1 <- as.numeric(names(my.list))

然后构造df

$df <- cbind(data.frame(p1),p2)

理想的结果是 return:

$dim(df)
3 2
$df$p1
var1 var2 var3

我不确定这是否是您需要的。

my.list <- as.data.frame(sapply(trees,mean))
my.list <- cbind(my.list,rownames(my.list))
rownames(my.list) <- NULL

我相信可能还有其他一些聪明的方法!