R if/ifelse循环中的布尔运算符

R if/ifelse循环中的布尔运算符,r,if-statement,boolean-operations,R,If Statement,Boolean Operations,用这样的矩阵 r<-20; c<-6; m1 <- round(matrix(runif(r*c), r, c))) r我从for循环中提取出,您希望对第4行和第5行的组合以及第4行和第6行的组合执行相同的操作。我认为你最好能建立一个通用函数,并将其应用于两种组合。我为你的问题提出以下解决方案 get.code <- function(x) { if(x[1] == 0 & x[2] == 0){0} else if (x[1] == 0 & x[2]

用这样的矩阵

r<-20;
c<-6;
m1 <- round(matrix(runif(r*c), r, c)))

r我从
for
循环中提取出,您希望对第4行和第5行的组合以及第4行和第6行的组合执行相同的操作。我认为你最好能建立一个通用函数,并将其应用于两种组合。我为你的问题提出以下解决方案

get.code <- function(x) {
 if(x[1] == 0 & x[2] == 0){0} else if (x[1] == 0 & x[2] == 1){3
 }else if(x[1] == 1 & x[2] == 1){4} else {2}
}

code1 <- apply(m1[,c(4,5)], 1, get.code)
code2 <- apply(m1[,c(4,6)], 1, get.code)
cbind(m1,code1, code2)

get.code请在您的问题中添加相关的语言标签。我猜应该是
m1[,5]
部分,但需要一种语言来更好地理解问题。对不起,我刚刚添加了语言tagHi Edwin,谢谢您的建议。本规范考虑到了操作员的需求,并且工作顺利。但是,
for
循环的第二行中比较三列的计算没有以这种方式考虑。这是否需要额外完成?我最终选择编写其他函数来评估其余选项。
get.code <- function(x) {
 if(x[1] == 0 & x[2] == 0){0} else if (x[1] == 0 & x[2] == 1){3
 }else if(x[1] == 1 & x[2] == 1){4} else {2}
}

code1 <- apply(m1[,c(4,5)], 1, get.code)
code2 <- apply(m1[,c(4,6)], 1, get.code)
cbind(m1,code1, code2)