为函数中的名称赋值

Assign values to a name within a function

这是我的代码:

get_test <- function(name){
  data <- filter(data_all_country,country == name)
  # transform the data to a time series using `ts` in `stats`
  data <- ts(data$investment, start = 1950)
  data <- log(data)
  rule <- substitute(name)
  assign(rule,data)
}

在代码中,我尝试构建一个函数,通过该函数我可以输入以字符串形式给出的国家/地区名称,然后自动生成以国家/地区命名的变量。但是,我 运行 这段代码,它 运行s 但没有按我的意愿生成确切的变量。例如,我想在我编码 get_test("Albania") 之后在环境中有一个名为 Albania 的变量。

我想知道为什么?

Ps: 而data_all_country的数据集如下:

    year country investment
1 1950 Albania         NA
2 1951 Albania         NA
3 1952 Albania         NA
4 1953 Albania         NA
5 1954 Albania         NA
6 1955 Albania         NA

注意数据集没问题,只有一部分是NA

我认为您必须为 assign 指定环境,否则它将使用当前环境(在本例中是在函数内)。

你可以使用

assign(name, data, envir = .GlobalEnv)

assign(name, data, pos = 1)