【发布时间】:2013-03-27 18:25:50
【问题描述】:
这样的矩阵
r<-20;
c<-6;
m1 <- round(matrix(runif(r*c), r, c)))
我想使用 if/ifelse 和布尔运算符基于最后三个创建两个新列。
我尝试了以下但没有成功:
for (i in 1:dim(m1)[1]){
if(sum(m1[i,4:6]==0)) {m1$Code1[i]<-0;m1$Code2[i]<-0}
else if(sum(m1[i,4:6]==3)) {m1$Code1[i]<-5;m1$Code2[i]<-5}
else if(m1[i,4]==0 && m1[,5]==1) {m1$Code1[i]<-3}
else if(m1[i,4]==0 && m1[,6]==1) {m1$Code2[i]<-3}
else if(m1[i,4]==1 && m1[,5]==0) {m1$Code1[i]<-2}
else if(m1[i,4]==1 && m1[,6]==0) {m1$Code2[i]<-2}
else if(m1[i,4]==1 && m1[,5]==1) {m1$Code1[i]<-4}
else if(m1[i,4]==1 && m1[,6]==1) {m1$Code2[i]<-4}
}
我的问题是我是否可以在 if 子句中使用 &&,但不知何故这不起作用。有人可以告诉我为什么或提供更好的选择吗?
提前致谢, 斯蒂芬
【问题讨论】:
-
请在您的问题中添加相关语言标签。
-
我的猜测是
m1[,5]部分,但需要一种语言来更好地理解这个问题。 -
对不起,我刚刚添加了语言标签
标签: r if-statement boolean-operations