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

时间:2015-06-10 00:40:33

标签: r list dataframe sapply

我有一个由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

我已尝试按如下方式对 my.list 的每一行进行“分组”:

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

但是我没有更多的运气将这些行向量重新绑定到数据帧中。有什么想法/建议?感谢。

4 个答案:

答案 0 :(得分:2)

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

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

我确定可能还有其他智能方法可以做到这一点!

答案 1 :(得分:1)

如果我正确理解您的问题,您可以使用stack。在这里,我可以从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

答案 2 :(得分:0)

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

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

(下次请向我们提供您的输入以便于回答)

答案 3 :(得分:0)

p1 p2 绑定到 df 类似于问题#12787551

以下是解决方案: 删除p1(因子)中的级别

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

然后构建 df

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

然后理想的结果会返回:

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