如何在 ifelse 语句中只获得一次迭代
How to get only one iteration in ifelse statement
我正在尝试通过函数传递字符串以调用数据框中的列。我做了一个非常简单的 if-else 函数来确保在增加复杂性之前基础工作正常。本质上,如果在数据框中找到列名,则打印 "Hi",否则打印 "No"。该函数正确识别列名是否在数据框中,但它会打印重复的 "No"。
我试过使用if(){}else(){}
使用ifelse()
将 break 和 next 与 if(){}else(){} 方法一起使用
df <- as.data.frame(cbind("a" = 1:5,
"b" = 6:10))
testingIf <- function(x){
if(x %in% colnames(df)){
print("Hi")
}
else{
(print("No"))
}
}
testingIf("a")
testingIf("This is true")
if(){}else(){}
-这是我最初的尝试,如果 'if' 为真,它会按预期工作,但如果 'if' 为假,它会打印出 [1] No [1] No.
使用ifelse()
-打印出 [1] Hi [1] Hi 当 true 和 [1] No [1] No 当 false
在 if(){}else(){}
语法中使用 break 和 next
- 就它给我正确的输出而言,这是有效的,但我得到
"Error: no loop for break/next, jumping to top level"
,这让我觉得我错过了什么。
使用 ifelse()
函数可以简化您的函数。
使用您的数据框 df <- as.data.frame(cbind("a" = 1:5,"b" = 6:10))
,我们可以将您的函数重写为:
testingIf <- function(x,dt){
ifelse(x %in% colnames(dt),"Hi","No")
}
现在测试代码,我们有:
> testingIf("a",df)
[1] "Hi"
> testingIf("This is true",df)
[1] "No"
希望对您有所帮助!
我正在尝试通过函数传递字符串以调用数据框中的列。我做了一个非常简单的 if-else 函数来确保在增加复杂性之前基础工作正常。本质上,如果在数据框中找到列名,则打印 "Hi",否则打印 "No"。该函数正确识别列名是否在数据框中,但它会打印重复的 "No"。
我试过使用if(){}else(){}
使用ifelse()
将 break 和 next 与 if(){}else(){} 方法一起使用
df <- as.data.frame(cbind("a" = 1:5,
"b" = 6:10))
testingIf <- function(x){
if(x %in% colnames(df)){
print("Hi")
}
else{
(print("No"))
}
}
testingIf("a")
testingIf("This is true")
if(){}else(){}
-这是我最初的尝试,如果 'if' 为真,它会按预期工作,但如果 'if' 为假,它会打印出 [1] No [1] No.
使用ifelse()
-打印出 [1] Hi [1] Hi 当 true 和 [1] No [1] No 当 false
在 if(){}else(){}
语法中使用 break 和 next
- 就它给我正确的输出而言,这是有效的,但我得到
"Error: no loop for break/next, jumping to top level"
,这让我觉得我错过了什么。
使用 ifelse()
函数可以简化您的函数。
使用您的数据框 df <- as.data.frame(cbind("a" = 1:5,"b" = 6:10))
,我们可以将您的函数重写为:
testingIf <- function(x,dt){
ifelse(x %in% colnames(dt),"Hi","No")
}
现在测试代码,我们有:
> testingIf("a",df)
[1] "Hi"
> testingIf("This is true",df)
[1] "No"
希望对您有所帮助!