获取for循环列表的名称

时间:2012-06-20 04:21:11

标签: r list flow-control

在PHP中,您可以使用

访问for循环中的数组的名称和值
foreach ( $array as $key => $value ) {

在循环命名列表时,R中是否有可比的东西?

3 个答案:

答案 0 :(得分:8)

使用一些虚拟数据和一个愚蠢的人为例子

ll <- list(A = 1:10, B = LETTERS[1:10], C = letters[1:10])

您可以lapply()覆盖ll

元素的索引
out <- lapply(seq_along(ll),
           function(ind, list, names) {
               paste(names[ind], "=", paste(list[[ind]], collapse = ", "))
           }, list = ll, names = names(ll))

R> out
[[1]]
[1] "A = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10"

[[2]]
[1] "B = A, B, C, D, E, F, G, H, I, J"

[[3]]
[1] "C = a, b, c, d, e, f, g, h, i, j"

for()遍历列表:

ll2 <- vector("list", length(ll))
nams <- names(ll)
for(i in seq_along(ll)) {
    ll2[[i]] <- paste(nams[i], "=", paste(ll[[i]], collapse = ", "))
}
ll2

R> ll2
[[1]]
[1] "A = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10"

[[2]]
[1] "B = A, B, C, D, E, F, G, H, I, J"

[[3]]
[1] "C = a, b, c, d, e, f, g, h, i, j"

答案 1 :(得分:3)

要获取列表的名称,只需使用names(list)

ll <- list(A = 1:10, B = LETTERS[1:10], C = letters[1:10])
names(ll)
#[1] "A" "B" "C"

如果列表被命名为开头,大多数* apply函数将返回适当命名的值。

sapply(ll, max)
#   A    B    C 
#"10"  "J"  "j" 

答案 2 :(得分:1)

这是一种更简单的方法:

for (name in names(myList)) {
    print(name)
    print(myList[[name]])
}

注意:我没有编写此代码。我是从this page复制过来的。