在r编程中: 我想使用相同的方法来处理案例1和10,即当循环在第1轮然后再在10中时。同样适用于2和11。 有没有办法让几个案例表达式由同一个方法处理 对于k == 1以及之后也应该使用第一种情况,对于k == 2和之后的11,它应该使用第二种情况。上面的代码不起作用。
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)
}
}
}
只有一个案例表达式的相同代码有效:
for(i in 1:x) {
switch(k,
"1" = {
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" ={
correct <- test[21,2]
current <- test[i,2]
if(all(correct == current)){
answers[i,k] <- c(1)
} else{
answers[i,k] <- c(0)
}
}
}
在java中我们可以使用案例1:case 2来做到这一点。怎么在r?
我感谢您的帮助。或者我也可以复制代码但不想,如果我可以避免它。
答案 0 :(得分:1)
我个人的选择是将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
然后将kmatch
提供给您的case
表达式
答案 1 :(得分:1)
语法与
一致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"
这是详细记录在&#39;细节&#39;的第三段中。 ?switch
的一部分。