我有一个这样的名单:转换列表以一行data.frame
arg0 <- list(code = "a", n = rep(10, 3))
对象列表中的数目是可变的。列表中的对象是矢量 - 只有一维对象。
我想打一个过程将列表转换成一排data.frame这样的:
> data.frame(code = "a", n.1 = 10, n.2 = 10, n.3 = 10)
code n.1 n.2 n.3
1 a 10 10 10
我目前这个解决方案:
a <- stack(arg0)
b <- data.frame(t(a[,1]))
names(b) <- a[,2]
b <- data.frame(b)
哪里b
几乎是结果我想实现:
> b
code n n.1 n.2
1 a 10 10 10
两个问题:
- 有没有更优雅的方法来实现结果?
- 你有什么想法如何获得重复的姓名的编号,如
c(n.1, n.2, n.3)
?
由于保留了数据类型而被接受 - 额外的功能我没有问在问题中,但我正在考虑这个问题。令我吃惊的是,对象的命名是如何在R中组织的。在这两个例子中,不同的行名被分配给相同的结果:'foo < - function(x)t(data.frame(x)); foo(arg0 [[1]])和't(data.frame(arg0 [[1]]))'。也不知道'lapply'保存了参数列表中的对象名称。谢谢你的教育答案! – djhurio