r - 在 R 中,为什么将 ls 作为函数参数传递不同于将 ls() 作为函数参数传递?
问题描述
f <- function(x) {
a <- 1
x
}
f(ls())
在上面的代码中,对 f(ls()) 的调用将打印出全局环境中的变量。
但:
f <- function(x) {
a <- 1
x()
}
f(ls)
将打印出函数 f 的环境中的变量,即“a”和“x”。
解决方案
在第一种情况下,您传递ls()
- 的结果,它是环境中所有对象的向量。你的函数只打印传递的内容x
,即 - 的结果ls()
。
在第二种情况下,您传递一个函数,并且函数 get 在函数体内执行。
基本上,您可以将呼叫的第一个版本视为:
x <- ls()
f(x)
print(ls())
再举一个例子:看看和之间的区别print(ls)
。
推荐阅读
- javascript - 从通过 DataTables 和 Ajax 进行服务器端数据处理的网站抓取数据
- spring-batch - 使用MYSQL,Spring批处理JdbcBatchItemWriter插入非常慢
- php - 从 foreach 循环创建的数组现在要插入数据库
- c++ - 枚举的 C++ 静态实例在两个源文件之间共享
- jestjs - 单元测试 gatsby useStaticQuery 自定义钩子
- php - Json 编码 PRETTY PRINT 在 php 中用斜杠打印出来
- android - Android 10 模拟器 - 由于 UUID 字符串无效而无法卸载应用程序
- python - 如何在 font.render 行中包含这个变量?
- typescript - 如何将nestjs + graphql 部署到now.sh?
- c# - 如何插入要预测的列(标签)