"Unused argument" 将外部向量作为参数时函数 (if...else) 出错
"Unused argument" error in function (if...else) when putting external vector as argument
我正在尝试设置一个函数,该函数从单个向量中获取值,执行一些初始检查并最终进行计算,以防检查找到合适的输入。这是我面临的问题的简化版本:
我需要一个向量,由两个值占位符组成
vec <- c(a,b)
然后,我设置函数 tt:
tt<-function(vec)
if(a > b){
return("ERROR")
}else{message("ok")}
并输入两个测试值:
tt(1,2)
...然而,这会产生 "Error in tt(1, 2) : unused argument (2)"。
我试过用其他方式定义向量 vec(a,b) ,例如:
a<-vec[1]
b<-vec[2]
tt<-function(vec)
if(a > b){
return("ERROR")
}else{message("ok")}
或
tt<-function(vec)
if(a > b){
a<-vec[1]
b<-vec[2]
return("ERROR")
}else{message("ok")}
当我将占位符直接输入函数时,整个 if/else 工作正常,如:
tt<-function(a, b)
if(a > b){
return("ERROR")
}else{message("ok")}
tt(1,2)
所以我假设问题一定是由于我无法将向量正确地放入函数中引起的。我非常感谢任何关于如何正确表达这一点以使 R 理解的意见。
您需要调用:tt(c(1,2))
而不是 tt(1,2)
让我们考虑一下您的函数定义。首先,您需要一组额外的大括号。
tt<-function(vec){
if(a > b){
return("ERROR")
}else{message("ok")}}
其次,在英语中,您的函数 tt
接受一个参数 vec
。
现在让我们考虑一下您的函数调用:
tt(1,2)
在英语中,您想使用参数 1
和 2
计算 tt
。但是,您的函数只接受一个参数。因此您会收到错误:"Error in tt(1, 2) : unused argument (2)",因为第二个参数 2
未使用。
我们该如何解决这个问题?首先,我们可以根据vec
定义a
和b
:
tt<-function(vec){
a <- vec[1]
b <- vec[2]
if(a > b){
return("ERROR")
}else{message("ok")}}
现在我们可以用一个参数调用 tt
,一个包含两个元素的向量:
tt(c(1,2))
#ok
tt(c(2,1))
#[1] "ERROR"
我正在尝试设置一个函数,该函数从单个向量中获取值,执行一些初始检查并最终进行计算,以防检查找到合适的输入。这是我面临的问题的简化版本:
我需要一个向量,由两个值占位符组成
vec <- c(a,b)
然后,我设置函数 tt:
tt<-function(vec)
if(a > b){
return("ERROR")
}else{message("ok")}
并输入两个测试值:
tt(1,2)
...然而,这会产生 "Error in tt(1, 2) : unused argument (2)"。 我试过用其他方式定义向量 vec(a,b) ,例如:
a<-vec[1]
b<-vec[2]
tt<-function(vec)
if(a > b){
return("ERROR")
}else{message("ok")}
或
tt<-function(vec)
if(a > b){
a<-vec[1]
b<-vec[2]
return("ERROR")
}else{message("ok")}
当我将占位符直接输入函数时,整个 if/else 工作正常,如:
tt<-function(a, b)
if(a > b){
return("ERROR")
}else{message("ok")}
tt(1,2)
所以我假设问题一定是由于我无法将向量正确地放入函数中引起的。我非常感谢任何关于如何正确表达这一点以使 R 理解的意见。
您需要调用:tt(c(1,2))
而不是 tt(1,2)
让我们考虑一下您的函数定义。首先,您需要一组额外的大括号。
tt<-function(vec){
if(a > b){
return("ERROR")
}else{message("ok")}}
其次,在英语中,您的函数 tt
接受一个参数 vec
。
现在让我们考虑一下您的函数调用:
tt(1,2)
在英语中,您想使用参数 1
和 2
计算 tt
。但是,您的函数只接受一个参数。因此您会收到错误:"Error in tt(1, 2) : unused argument (2)",因为第二个参数 2
未使用。
我们该如何解决这个问题?首先,我们可以根据vec
定义a
和b
:
tt<-function(vec){
a <- vec[1]
b <- vec[2]
if(a > b){
return("ERROR")
}else{message("ok")}}
现在我们可以用一个参数调用 tt
,一个包含两个元素的向量:
tt(c(1,2))
#ok
tt(c(2,1))
#[1] "ERROR"