我有一个由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
但是我没有更多的运气将这些行向量重新绑定到数据帧中。有什么想法/建议?感谢。
答案 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