【发布时间】:2020-02-03 20:44:57
【问题描述】:
我有以下数据框:
df1
Name Ch1 Val1
A a x1
B b x2
C a x3
...
我想添加另一行,为我试图获得的循环提供解决方案:
for (i in nrow(df))
if ( (df[i,3]>=-2)==T & (df3[i,3] <=2)==T & df[i,2]=="a"){
df[i,4]<-TRUE
}else if ((df[i,3]>2)==T & df[i,2]=="b"){
df[i,4]<-TRUE
}else (df[i,4]<-FALSE)
所以基本上如果 Val1 中的值在 -2 和 +2 的区间内并且 Ch1 是“a”它应该导致 TRUE 或如果 Val1 大于 2 且 Ch1 为“b”,则结果为 TRUE
否则它应该总是错误的。
我的循环似乎只返回第一行的结果,其余为 NA。 知道错误在哪里吗?或者另一种方法来解决这个问题(即使我实际上还有更多的 OR)
谢谢!
【问题讨论】:
-
一般来说,你永远不需要输入
== T。>=或<或==等逻辑测试已经返回 TRUE 或 FALSE。
标签: r loops if-statement