我在RStudio中创建了一个非常简单的if ... else语句,我遇到了以下问题。如果你能花点时间看看这个,我将不胜感激: -
(A)代码: -
testing <- function(var1) {
if(var1 == "heart attack") {
col_no <- 11
col_no
} else if(var1 == "heart failure") {
col_no <- 17
col_no
} else if(var1 == "pneumonia") {
col_no <- 23
col_no
} else {"error"}
}
(B)输出: -
testing("heart attack")
# [1] 11
col_no
# Error: object 'col_no' not found
testing("heart failure")
# [1] 17
col_no
# Error: object 'col_no' not found
testing("pneumonia")
# [1] 23
col_no
# Error: object 'col_no' not found
当我输入“testing(”heart failure“)”时,我期望col_no的值为17而不是错误。
同样,当我输入“testing(”pneumonia“)”时,我期望col_no的值为23而不是错误。
请帮忙!
答案 0 :(得分:1)
这里使用switch
:
testing <- function(var1){
switch(var1,
"heart attack" = 11,
"heart failure"= 17,
"pneumonia" = 23,
"error")
}
调用该函数:
col_no <- testing("heart attack")
col_no
#[1] 11
col_no <- testing("heart failure")
col_no
#[1] 17
col_no <- testing("pneumonia")
col_no
#[1] 23
col_no <- testing("flue")
col_no
#[1] "error"
答案 1 :(得分:-3)
因为您定义了一个函数(测试),所以变量col_no仅在此函数中可用,而不在全局环境中。试试这个,然后变量也在全局环境中定义:
testing <- function(var1) {
if(var1 == "heart attack") {
col_no <<- 11
col_no
} else if(var1 == "heart failure") {
col_no <<- 17
col_no
} else if(var1 == "pneumonia") {
col_no <<- 23
col_no
} else {"error"}
}