将值分配给函数中的名称

时间:2017-11-30 05:51:26

标签: r assign

这是我的代码:

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)
}

在代码中,我尝试构建一个函数,通过该函数我可以输入字符串中给出的国家/地区名称,然后将自动生成由国家/地区命名的变量。但是,我运行此代码,它运行但没有生成我想要的确切变量。例如,我希望在编码Albania之后在环境中有一个名为get_test("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

1 个答案:

答案 0 :(得分:3)

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

您可以使用

assign(name, data, envir = .GlobalEnv)

assign(name, data, pos = 1)