我一直在尝试学习 R 中“if”和“for”的用法。作为一个简单的例子,我设置了数据框
V1<-c(3,2,2,4,5)
V2<-c(3,7,3,5,2)
V3<-c(5,2,5,7,5)
V4<-c(1,1,2,3,4)
V5<-c(1,2,6,7,5)
DF2<-data.frame(V1=V1,V2=V2,V3=V3,V4=V4,V5=V5)
DF2
V1 V2 V3 V4 V5
1 3 3 5 1 1
2 2 7 2 1 2
3 2 3 5 2 6
4 4 5 7 3 7
5 5 2 5 4 5
我的目标是设置一个 if 语句,该语句将根据行值删除一行中的一列。举个例子:
If V1 = 5, drop column V5
If V1 = 4, drop column V4 & V5
所以根据这些规则,我的数据框最终看起来像这样
V1 V2 V3 V4 V5
1 3 3 5 1 1
2 2 7 2 1 2
3 2 3 5 2 6
4 4 5 7
5 5 2 5 4
我的第一个想法是我可以写一个简单的 if 语句来做到这一点:
if(DF2$V1==5){
DF2[-5]
}else if(DF2$V1==4){
DF2[-4:5]
}
但我得到一个错误,“if”条件语句不能>1。所以我想如果我写了一个“for”循环,它将允许if语句逐行执行,允许条件语句为==1。
for(i in 1:length(DF2)){
if(DF2$V1==5){
DF2[-5]
}else if(DF2$V1==4){
DF2[-4]
}
}
但现在我得到了同样的错误,只是 x10。所以我显然是在同一棵树上吠叫。所以我的问题是 - 处理我的原始数据框问题的最佳方法是什么?如果没有某种 if 或 for 循环答案,为什么会出现此错误?