将 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))
(下次请提供您的意见以便我们更容易回答)
将 p1 和 p2 绑定到 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
我相信可能还有其他一些聪明的方法!
我有一个由 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))
(下次请提供您的意见以便我们更容易回答)
将 p1 和 p2 绑定到 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
我相信可能还有其他一些聪明的方法!