R:尝试分配给作为参数传递的列表

时间:2017-05-15 15:40:29

标签: r

我想将列表的名称作为参数传递给函数,然后在函数内部分配给该列表。以下说明了问题。

names <- c("a", "b", "c")
mylist <- list()

foo <- function(listname) {
for(name in names){
    listname[[name]] <<- 7
    }
}

这不起作用,并生成“listname”未知的错误。有人能解决这个问题吗?我将非常感激。

1 个答案:

答案 0 :(得分:0)

我认为你有两件事情出错了。首先,我不认为你在mylist中存储了任何内容,即没有任何名称或任何内容供你的功能检查。尝试设置列表如下:

mylist <- list("a", "b", "c")
names(mylist) <- c("a", "b", "c")
mylist
#> $a
#> [1] "a"
#> 
#> $b
#> [1] "b"
#> 
#> $c
#> [1] "c"

在您的函数中,您需要a)执行names(listname),以便检查实际列表的名称,并b)在重新分配后返回列表。然后,它可以分配给列表它将返回这些值。

foo <- function(listname) {
    for(name in names(listname)){
        listname[[name]] <- 7
    }

    listname
}

foo(mylist)
#> $a
#> [1] 7
#> 
#> $b
#> [1] 7
#> 
#> $c
#> [1] 7

请注意mylist仍然具有相同的值;什么都没有重新分配。

mylist
#> $a
#> [1] "a"
#> 
#> $b
#> [1] "b"
#> 
#> $c
#> [1] "c"