R无法在函数列表中添加项目

时间:2014-08-30 20:47:07

标签: r list function

我有以下代码

l=list()
funcF=function(x)
{
  l[[x]] ="somevalue"
}

funcF("A")
funcF("B")
print(l)

我在期待

print(l)

打印

$A
[1] "somevalue"


$B
[1] "somevalue"

但打印

"list()"

为什么列表为空,如果我在其工作的函数之外设置相同的值。 我错过了什么?

1 个答案:

答案 0 :(得分:1)

功能是一个封闭的系统。函数内部的对象不“知道”外部有一个列表l

如果要操作列表l之类的对象,则必须将其传递给该函数。否则它超出了函数的范围并且无法访问它。

如果我重写这样的函数会发生什么:

l=list()
funcF=function(x,y,z)
{
  x[[y]] = z
  return(x)
}

funcF(l,"A","someA")

#> funcF(l,"A","someA")
#$A
#[1] "someA"

funcF(l,"B","someB")

#> funcF(l,"B","someB")
#$B
#[1] "someB"

l <- funcF(l,"A","someA")
l <- funcF(l,"B","someB")
l

#> l
#$A
#[1] "someA"
#
#$B
#[1] "someB"

在新编写的函数x中是目标列表,y表示要填充的“插槽”,z是分配给插槽的值。

干杯!