Перезаписать переменную внутри функции - PullRequest
1 голос
/ 06 апреля 2020

Я уверен, что этот вопрос, возможно, уже задавался, но я не смог найти ответ на мое удовлетворение.

Таким образом, в моей задаче я определил функцию (см. Ниже), которая должна принимать переменную (x) и проверьте, является ли его часть кадра данных (y). Функция должна затем запрашивать приглашение, пока оно не станет частью указанного фрейма данных.

Однако, когда я его запускаю, он не перезаписывает переменную внутри функции, так что глобальная переменная окружения также изменяется. Таким образом, var1 должен хранить значение, которое я дал через приглашение внутри функции.

Thx:)

    #Function
    fn_Valid_prompt <- function(x, y, boolOP= FALSE){
       while(is.element(x, colnames(y)) == boolOP){
         cat("A")
         x <<- readline(prompt="Please enter variable: ")
       }
       if (is.element(x, colnames(y)) != boolOP){
              cat(green(bold("Success!")))}
     }

    #
    var1 <- "V1"
    data <- c(1:9)
      metadata <- as.data.frame(matrix(data,3,3))

     fn_Valid_prompt(var1, metadata, boolOP= FALSE)

1 Ответ

0 голосов
/ 06 апреля 2020

Следующая версия работает, хотя я не уверен в ваших намерениях с этим кодом:

#Function
fn_Valid_prompt <- function(x, y, boolOP= FALSE){
  while(is.element(x, colnames(y)) == boolOP){
    x <- readline(prompt="Please enter variable: ")
  }
  if (is.element(x, colnames(y)) != boolOP){
    cat("Success!")}
  return(x)
}

#
var1 <- "V1"
data <- c(1:9)
metadata <- as.data.frame(matrix(data,3,3))

result = fn_Valid_prompt("V10", metadata, boolOP= FALSE)
cat(result)

Ваша ошибка заключалась в использовании <<- вместо <-. Кроме того, я полагаю, вы хотели вернуть результат?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...