这是一个小清单:
foo <- list(c("johnny", "joey"), character(0), "deedee")
[[1]]
[1] "johnny" "joey"
[[2]]
character(0)
[[3]]
[1] "deedee"
Run Code Online (Sandbox Code Playgroud)
如何将其转换为此数据框?
list_item name
1 1 johnny
2 1 joey
3 3 deedee
Run Code Online (Sandbox Code Playgroud)
我见过的所有列表到数据帧的解决方案都不起作用,因为我的列表不完整.
melt包的功能reshape2也在列表上工作.所以你可以使用:
library(reshape2)
melt(foo)
# value L1
#1 johnny 1
#2 joey 1
#3 deedee 3
Run Code Online (Sandbox Code Playgroud)
我相信你知道如何改变名字.
这是基础R的一种方式:
data.frame(list_item=rep(seq_along(foo), sapply(foo, length)),
name=unlist(foo))
## list_item name
## 1 1 johnny
## 2 1 joey
## 3 3 deedee
Run Code Online (Sandbox Code Playgroud)
正如@RichardScriven在评论中所提到的,sapply(foo, length)可以替换为lengths(foo).
我们可以在将 'foo'设置为 'foo' 序列后使用stackfrom 。base Rnames
stack(setNames(foo, seq_along(foo)))
# values ind
#1 johnny 1
#2 joey 1
#3 deedee 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |