'If condition'时出错-条件的长度> 1,并且仅使用第一个元素

时间:2019-01-18 11:03:19

标签: r dataframe if-statement

在数据框ad2中,如果成本值介于上限和下限之间,则新建一个数据框。 我尝试了以下方法:

if (ad2$Cost.x>=ad2$lower & ad2$Cost.x<=ad2$upper) {
  ad3<-ad2[ad2$Country,ad2$Brand, ad2$Year, ad2$BU219.x, ad2$Cost.x, ad2$Value.x, ad2$Optimized_point.x]
}

但是出现此错误

  the condition has length > 1 and only the first element will be used

2 个答案:

答案 0 :(得分:0)

如果打印ad2$Cost.x>=ad2$lower & ad2$Cost.x<=ad2$upper的值,结果将导致您看到多个布尔条件。这是因为在R中所有操作都是矢量化的。

示例:

> cc =c(T,F)
> if (cc) print(cc)
[1]  TRUE FALSE
Warning message:
In if (cc) print(cc) :
  the condition has length > 1 and only the first element will be used

因此使用所有或任何类似这样的功能:

> if (all(cc)) print(cc) #If all conditions are true
> if (any(cc)) print(cc)
[1]  TRUE FALSE

答案 1 :(得分:0)

尝试一次

if(ad2 $ Cost.x> = ad2 $ lower&ad2 $ Cost.x <= ad2 $ upper){ ad3 <-ad2 [,c(国家/地区,品牌,年份,BU219.x,Cost.x,Value.x,Optimized_point.x)] }