为了提高速度,我创建了一些始终可用的常规全局数据集。他们不时需要更新。
我正在尝试在需要更新数据集时调用的函数中执行此操作。
有什么方法可以在R中的函数中创建全局数据集?我知道了assign函数,但是我无法让该函数适用于数据框,仅适用于变量。
我该怎么做?
x <- c(1,2,3,4)
z <- function () x <- c(1,2,3,4,5,6,7,8,9,10)
现在当我运行z()时,它应该将x更新为(1 ... 10)
答案 0 :(得分:3)
我知道了assign函数,但是我无法使该函数适用于数据框,仅适用于变量。
奇数:assign
对所有类型的对象都以相同的方式起作用,无论它们的类型如何:
assign('name', object, environment)
在您的情况下,这将是:
assign('x', your_df, globalenv())
-但是,正如评论中提到的那样,在函数范围之外修改对象是一个非常糟糕的主意(很少有例外)。使函数起作用的正确方法是从函数中返回修改/创建的对象。
使用您的示例:
x <- c(1,2,3,4)
z <- function () c(1,2,3,4,5,6,7,8,9,10)
# Usage:
x <- z()
答案 1 :(得分:1)
我们可以使用<<-
运算符来全局分配变量
z <- function () x <<- c(1,2,3,4,5,6,7,8,9,10)
z()
x
#[1] 1 2 3 4 5 6 7 8 9 10