Присвоение значений имени внутри функции

Вот мой код:

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


person exteral    schedule 30.11.2017    source источник
comment
В вашем описании не упоминается ts(). Сократите свой пример до самого необходимого. Также покажите код, вызывающий функцию fn.   -  person IRTFM    schedule 30.11.2017
comment
Привет, @42, ts — это функция для преобразования во временной ряд.   -  person exteral    schedule 30.11.2017
comment
может быть это ts(data$data_all_country.investment, start = 1950)   -  person Suren    schedule 30.11.2017
comment
Извините за недоразумение, набор данных является примером использования функции data.frame(), чтобы избежать большого количества ненужных столбцов, часть $ не представляет проблемы.   -  person exteral    schedule 30.11.2017


Ответы (1)


Я думаю, вам нужно указать среду для assign, иначе она будет использовать текущую среду (в данном случае внутри функции).

Вы могли бы использовать

assign(name, data, envir = .GlobalEnv)

or

assign(name, data, pos = 1)
person Suren    schedule 30.11.2017