我有一个任意深度的列表,其中包含任意数量的命名字符向量.一个简单的例子可能是:
d <- c("foo", "bar")
names(d) <- c("d1", "d2")
e <- c("bar","foo")
names(e) <- c("d1", "d3")
l <- list(a1 = list(b1 = list(c1 = d, c2 = e), a2 = list(b1 = e)))
l
$a1
$a1$b1
$a1$b1$c1
d1 d2
"foo" "bar"
$a1$b1$c2
d1 d3
"bar" "foo"
$a1$a2
$a1$a2$b1
d1 d3
"bar" "foo"
Run Code Online (Sandbox Code Playgroud)
我喜欢在每片叶子上收集(完整)名称; 例如,
collect_names(l)
"$a1$b1$c1" "$a1$b1$c2" "$a1$a2$b1"
Run Code Online (Sandbox Code Playgroud)
比较不同"任意级别"的效率的一般解决方案获得额外的信用;)
wdots <- names(rapply(l,length))
Run Code Online (Sandbox Code Playgroud)
这适用于给出的示例,但我只是发现它归功于@ flodel的评论.如果你想要美元符号,那就是
wdols <- gsub('\\.','\\$',wdots)
Run Code Online (Sandbox Code Playgroud)
但是,正如@thelatemail指出的那样,如果层次结构中的任何名称包含".",则无法提供您想要的内容.
| 归档时间: |
|
| 查看次数: |
526 次 |
| 最近记录: |