Нестандартная оценка: передайте имя переменной в качестве параметра функции и попросите функцию присвоить ей значение - PullRequest
0 голосов
/ 26 сентября 2019

Я уверен, что на это где-то ответили, но не смогли его найти. Программирование с помощью dplyr также не дает ответа.

Мне нужно передать имя переменной в качестве параметра функции и заставить функцию присвоить ей значение.

assign_x <- function(xf = x){
  xf <- 5
}
rm(x)
assign_x(x)
x

Вариант использования:

Я хочу написать оболочку для odbc :: dbConnect, где я проверяю, является ли соединение уже действующим, и перезагружает соединение при необходимости.Иногда мне нужно отключиться, а затем снова подключиться, чтобы заставить соединение работать должным образом, если запрос зависает от меня.

1 Ответ

1 голос
/ 26 сентября 2019

Используйте parent.frame(), чтобы назначить, ну, в общем, среду звонящего.

assign_x <- function(xf = 'x', value = 5){
  x <- deparse(substitute(xf))
  assign(x, value, envir = parent.frame())
}

rm(x)

Предупреждающее сообщение:
В rm (x): объект 'x' не найден

assign_x(x)
x
#[1] 5

assign_x(y, pi)
y
#[1] 3.141593
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...