【发布时间】:2014-04-20 04:39:30
【问题描述】:
我正在尝试在 R 中编写一个函数,该函数从数据框中删除列并返回新数据,其名称指定为函数的参数:
drop <- function(my.data,col,new.data) {
new.data <<- my.data[,-col]
return(new.data)
}
因此,在上面的示例中,我希望在调用函数后存在一个新的数据框,该数据框以用户输入的第三个参数命名。
当我调用该函数时,会返回正确的数据帧,但如果我随后尝试在全局环境中使用新数据帧,我会得到object not found。我想通过使用 <<- 运算符我是在全局定义 new.data。
有人可以帮助我了解发生了什么以及是否有办法做到这一点?
【问题讨论】:
-
你可以
assign(new.data, mydata[,-col], envir = .GlobalEnv)虽然我会建议反对这整个想法 -
看起来你的函数比直接显式调用需要更多的输入。重点是什么?在函数中使用
<<-分配东西也是一种糟糕的做法。 -
您正在尝试编写具有副作用的函数。 R 是一种函数式语言,因此函数不应该有副作用。
-
@Dason 啊,很高兴知道
标签: r function global-variables