我想将列表的名称作为参数传递给函数,然后在函数内部分配给该列表。以下说明了问题。
names <- c("a", "b", "c")
mylist <- list()
foo <- function(listname) {
for(name in names){
listname[[name]] <<- 7
}
}
这不起作用,并生成“listname”未知的错误。有人能解决这个问题吗?我将非常感激。
答案 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"