switch case:r中的几个等价case表达式
在r编程中: 我想用同样的方法来处理案例1和案例10,也就是说,当循环在第1轮,然后又在第10轮。2号和11号也一样。 有没有一种方法可以让同一个方法处理多个case表达式 对于k==1和之后的fo10,它应该使用第一种情况,对于k==2和之后的11,它应该使用第二种情况。上面的代码不起作用switch case:r中的几个等价case表达式,r,switch-statement,expression,case,R,Switch Statement,Expression,Case,在r编程中: 我想用同样的方法来处理案例1和案例10,也就是说,当循环在第1轮,然后又在第10轮。2号和11号也一样。 有没有一种方法可以让同一个方法处理多个case表达式 对于k==1和之后的fo10,它应该使用第一种情况,对于k==2和之后的11,它应该使用第二种情况。上面的代码不起作用 for(i in 1:x) { switch(k, "1", "10"= { correct <- test[21,1]
for(i in 1:x) {
switch(k,
"1", "10"= {
correct <- test[21,1]
current <- test[i-p,1]
if(all(correct == current)){
answers[i-p,k] <- c(1)
} else{
answers[i-p,k] <- c(0)
}
},
"2","11" ={
correct <- test[21,2]
current <- test[i,2]
if(all(correct == current)){
answers[i,k] <- c(1)
} else{
answers[i,k] <- c(0)
}
}
}
(1:x中的i){code>
开关(k,
"1", "10"= {
正确的我个人的选择是将您的
k
重新映射到重叠的案例。例如:
k<-1:20
kmatch<-(k-1)%%9 +1
# [1] 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2
k语法与
f = function(x)
switch(x, "1"=, "10"="first", "11"="eleventh", "none")
请注意每个命名表达式后面的等号,而不是默认值
> f("1")
[1] "first"
> f("10")
[1] "first"
> f("11")
[1] "eleventh"
> f("12")
[1] "none"
这在?switch
的“详细信息”部分的第三段中有记录。您可以使用几个if()
语句,其中的测试将是沿着if(any)(在%c(“1”、“10”)中的情况%
。这似乎并没有解决OP的问题,即如何减少案例数量。@CarlWitthoft这与“在java中我们可以…”和其他编程语言中的开关的行为以及第一个代码块的非功能性代码是一致的。也许是这样,但这不是重点。此外,we可能应该警告OP,他很幸运,R
在执行1==“1”
> f("1")
[1] "first"
> f("10")
[1] "first"
> f("11")
[1] "eleventh"
> f("12")
[1] "none"