r - 覆盖函数内部的变量
问题描述
我敢肯定这个问题可能已经被问过了,但我找不到满意的答案。
所以我的问题我定义了一个函数(见下文),它应该接受一个变量(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)
解决方案
以下版本有效,尽管我不确定您使用此代码的意图:
#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)
您的错误是使用<<-
而不是<-
. 此外,我假设您想返回结果?
推荐阅读
- java - 在 Java 中调用多维数组的更好方法是什么?
- linux-kernel - 如何在内核模块中使用跟踪点
- javascript - React Router v4 没有在带有参数的路由中渲染组件
- ios - 'catch' 块无法访问
- android - 如何在服务中获取上下文(不是 applicationContext)
- javascript - javascript 通过添加元素 innerHTML 值来“构建”(创建)一个超链接按钮
- php - PHP 静态变量问题
- python - 合并多个 CSV 文件并按字段删除重复项
- ios - 将数据从一个集合视图传递到嵌入式集合视图
- sql - 在 SQL 中,如何显示不相等的值?