检查传入函数的参数是否在r中定义?
我想知道在函数内部对传递到函数中的变量应用更多操作之前,如何检查变量的存在性。因此,如果找不到变量,可以使用if-else语句忽略它。下面是一个示例代码。请注意,变量的名称是使用“paste0”函数构造的。这是因为它们以后必须被送入一个循环,为了简化,我省略了其余的操作检查传入函数的参数是否在r中定义?,r,function,undefined-variable,R,Function,Undefined Variable,我想知道在函数内部对传递到函数中的变量应用更多操作之前,如何检查变量的存在性。因此,如果找不到变量,可以使用if-else语句忽略它。下面是一个示例代码。请注意,变量的名称是使用“paste0”函数构造的。这是因为它们以后必须被送入一个循环,为了简化,我省略了其余的操作 existence = function(x1, x2, x3, x4) { for (i in 1:4){ varName <-paste0("x", i) # Chec
existence = function(x1, x2, x3, x4) {
for (i in 1:4){
varName <-paste0("x", i)
# Check if a defined variable is passed into the function
if(exists(varName)){
message(varName, " is defined")
} else {
message(varName, " is NOT defined")
}
}
}
<>你可以考虑通过字符符号测试变量的存在性。使用
ls()
<代码> b> p>可以考虑通过字符符号测试变量的存在性。使用
ls()
你好!检查并阅读。我认为,正如作者所建议的,检查某些参数是否传递的最简单方法是将它们全部设置为NA/NULL,并且使用
是.NA()
或是.NULL()
同意您应该将所有可选参数设置为NULL
作为默认值;但是,如果将条件更改为if(tryCatch({get(varName);TRUE},error=function(e)FALSE)&&&!is.null(get(varName))
,则函数应按原样工作;但是,existence(a,b,NULL,C)
会给您一个意外的答案,因为C
是定义的,但不是您在实际代码中想要的方式,所有参数都默认设置为NULL。缺少的()不起作用。@rawr,您提供的if语句起作用了。谢谢你好检查并阅读。我认为,正如作者所建议的,检查某些参数是否传递的最简单方法是将它们全部设置为NA/NULL,并且使用是.NA()
或是.NULL()
同意您应该将所有可选参数设置为NULL
作为默认值;但是,如果将条件更改为if(tryCatch({get(varName);TRUE},error=function(e)FALSE)&&&!is.null(get(varName))
,则函数应按原样工作;但是,existence(a,b,NULL,C)
会给您一个意外的答案,因为C
是定义的,但不是您在实际代码中想要的方式,所有参数都默认设置为NULL。缺少的()不起作用。@rawr,您提供的if语句起作用了。谢谢
b <- 10
c <- 5
existence(a, b, NULL, c)
x1 is Not defined
x2 is defined
x3 is Not defined
x4 is defined
b <- 10
c <- 5
existence = function(vars_to_check, vars_created) {
test <- vars_to_check %in% vars_created
names(test) <- vars_to_check
test
}
existence(
c('a', 'b', 'NULL', 'c'),
ls()
)
# a b NULL c
# FALSE TRUE FALSE TRUE
existence = function(vars_to_check, vars_created) {
test <- vars_to_check %in% vars_created
vars_to_check[test]
}
existence(
c('a', 'b', 'NULL', 'c'),
ls()
)
# 'b' 'c'