R:如何在不创建对象的情况下为String命名
这个问题在这里已经有了答案:
这是因为<-
和=
不一样。 对于除了在函数调用中使用的每个目的(几乎), <-
和=
是相同的。 如果你想传递一个命名参数,你必须使用=
not <-
。 myFunction(X <- expression)
将计算expression
并将结果保存到(全局)变量X
,并将结果作为myFunction
的第一个( 未命名 )参数。 与myFunction(X = expression)
,它将表达式作为指定的 X
参数传递给myFunction
并且不会创建(全局)变量X
我的解释有点乱码 - 我强烈推荐阅读?'<-'
( <-
和=
的帮助文件)更清晰。
在第一个中:
args <- list(place <- "Agra", adjective <- "huge")
R在全球环境中评估place <- "Agra"
,返回"Agra"
。 它同样在全球环境中评估adjective <- "huge"
,回归“巨大”。 然后它将结果(“Agra”和“huge”)作为未命名参数放入list()
调用中,所以基本上你所做的是
place <- "Agra"
adjective <- "huge"
args <- list("Agra", "huge")
这就是为什么你得到全局变量,而args
列表没有名字。 如果这是你想要的,你应该使用长格式而不是简写来写它。 使用第一种形式可能会导致意想不到的或令人困惑的副作用。
在第二个选项
args <- list(place = "Agra", adjective = "huge")
它只是简单地通过名为“place”的值为“Agra”的参数和名为“huge”的参数“adjective”。 由于list()
使用参数名称作为列表名称,这就是为什么你得到一个命名列表。 而且,这不会创建全局变量的place
和adjective
。
上一篇: R : how to name String without creating an object
下一篇: R: Is there any performance difference between using = or <