R中的嵌套IF函数

R中的嵌套IF函数,r,function,R,Function,我正在尝试构建一个函数,它包含3个参数,一个向量,是否显示图形,如果是,图形的类型。不幸的是,我犯了一个错误,不明白为什么。(这是针对一个类的,但我已经通过推理验证了这些点,我只想继续我的代码…) my_函数您在if条件中使用赋值,而不是等式检查。此外,您需要在链中的每个if前面加上else。请尝试以下代码: my_function <- function(x, display = FALSE, type) { if (display == TRUE & type == "

我正在尝试构建一个函数,它包含3个参数,一个向量,是否显示图形,如果是,图形的类型。不幸的是,我犯了一个错误,不明白为什么。(这是针对一个类的,但我已经通过推理验证了这些点,我只想继续我的代码…)


my_函数您在
if
条件中使用赋值,而不是等式检查。此外,您需要在链中的每个
if
前面加上
else
。请尝试以下代码:

my_function <- function(x, display = FALSE, type) {
    if (display == TRUE & type == "hist") {
        hist(x)
    } else if (display == TRUE & type == "plot") {
        plot(x)
    } else { 
        summary(x) 
    }
}

my_函数还有一个概览。我很确定在第二个
if
语句之前需要一个新行。丹妮尔在某些情况下就是这样挑剔的。我很确定他想要的是
,如果逻辑是
,但也许我错了。@TimBiegeleisen oh可能是。此外,布尔比较需要双等于
=
而不是
if
语句中的单等于
=
。@Thomas除了语法错误,我还想知道语义。您是否希望函数总是返回
summary(x)
,并且在
display==TRUE
的情况下,额外创建一个图形(或者
hist(x)
或者
plot(x)
)作为副作用?或者,它们是否被视为三个等效的替代方案,即
summary(x)
hist(x)
plot(x)
?当Tim纠正了语法错误时,我质疑函数的语义。如果有人调用my_函数(some_vector,TRUE,“polt”
),由于第三个参数
summary(x)中的输入错误,会发生什么情况
被返回。也许,这是OP的意图,可以容忍这样的输入错误,但不能保存。我花了几个小时调试这样的东西。我的建议:
My_function@UweBlock R无法将您从自己手中拯救出来。:)谢谢您的帮助!看着蒂姆的更正,我能够找到我错的地方,并且能够完成我的功能(我试图一步一步地构建它)。谢谢你的匹配。arg(),我不知道这个,它会派上用场的!
my_function <- function(x, display = FALSE, type) {
    if (display == TRUE & type == "hist") {
        hist(x)
    } else if (display == TRUE & type == "plot") {
        plot(x)
    } else { 
        summary(x) 
    }
}