首页 > 解决方案 > 覆盖函数内部的变量

问题描述

我敢肯定这个问题可能已经被问过了,但我找不到满意的答案。

所以我的问题我定义了一个函数(见下文),它应该接受一个变量(x)并检查它是否是数据帧(y)的一部分。该函数应该要求一个提示,直到它成为所述数据帧的一部分。

但是,当我让它运行时,它不会覆盖函数内的变量,因此全局环境变量也会改变。因此 var1 应该存储我通过函数内部的提示给出的值。

谢谢 :)

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

标签: rfunctionprompt

解决方案


以下版本有效,尽管我不确定您使用此代码的意图:

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

您的错误是使用<<-而不是<-. 此外,我假设您想返回结果?


推荐阅读