我可以在函数中创建全局数据集吗

时间:2018-12-12 12:12:07

标签: r assign

为了提高速度,我创建了一些始终可用的常规全局数据集。他们不时需要更新。

我正在尝试在需要更新数据集时调用的函数中执行此操作。

有什么方法可以在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)

2 个答案:

答案 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