r - 屏蔽现有对象时如何从函数分配给全局变量?
问题描述
我有这样的功能:
myfun <- function ()
{
df <<- data.frame(a = 1)
}
myfun()
但它报告错误“myfun() 中的错误:无法更改 'df' 的锁定绑定值”。我真的需要修改全局变量 df 并且我不在乎是否屏蔽现有函数。我怎样才能做到这一点?
我发现了这个解决方案。它可以工作,但是有什么不那么复杂的吗?
myfun <- function ()
{
df <- data.frame(a = 1)
assign("df", df, envir = .GlobalEnv)
}
myfun()
解决方案
这里最好的解决方案是完全避免处理函数内部的变量范围。如果要创建一个可用于分配数据框变量的函数,则只需让该函数返回数据框:
myfun <- function() {
df <- data.frame(a = 1)
return(df)
}
# from some calling scope
mydf <- myfun()
如果您希望在某个范围内分配数据框,则让该范围进行分配,而不是让函数执行此操作。
推荐阅读
- python - 迭代并将每个对象的字典从数组附加到新数组?
- java - 我可以访问传递给引用派生类的通用基类的类型的数据吗?
- java - 错误:找不到或加载主类文件名原因:java.lang.ClassNotFoundException:文件名
- c# - 当我从子类调用注入基类的泛型属性时,Autofac 的属性注入失败
- r - 使用 crrri 包和无头 chrome 向下滚动页面
- erlang - 为什么 Pry shell 在 Phoenix/cowboy 中超时如此之快?(shell进程退出原因:关机)
- javascript - javascript递归方法?
- r - 更改设计矩阵 model.matrix 的基础/参考
- java - 如何在 maven:3.6.3-openjdk-8 中下载 microdnf?
- php - 每天创建一个新行来计算页面浏览量