防止条件具有长度> 1:=操作者在data.table中的R
问题描述:
我创建data.table
这样的:防止条件具有长度> 1:=操作者在data.table中的R
dd<-data.table(c(7,8,9),c(10,5,10),c(8,9,11))
然后我尝试使用:=
通过它的功能,但我得到条件具有长度> 1错误。
dd[,Cat:= as.factor(if(V1 > V2 & V2 > V3)
{"decrease,decrease"} else if(V1 > V2 & V2 < V3)
{"decrease,increase"} else if(V1 < V2 & V2 < V3)
{"increase,increase"} else if(V1 < V2 & V2 > V3)
{"increase,decrease"})]
我知道这是因为这是if
如何工作。我可以做类似下面如果我只用了两列:
dd[, Cat:= as.factor(ifelse(V1>V2, "increase", "decrease"))]
其中一期工程,因为ifelse
显然量化。但我有三种不同的产出,我不想两种。
答
您可以嵌套ifelse
,
ifelse(V1 > V2 & V2 > V3, "decrease,decrease",
ifelse(V1 > V2 & V2 < V3, "decrease,increase",
ifelse(...)))
但在这种情况下,我可能会做paste(ifelse(V1 < V2, "increase", "decrease"), ifelse(V2 < V3, "increase", "decrease"), sep = ",")
所以我没有给每一个组合写出来的。
另请参阅Alternatives to nested ifelse和nested ifelse statement in R。
你也可以在子集上工作。例如'dd [V1> V2&V2> V3,Cat:= {“decrease,decrease”}]'以避免if语句/嵌套在一起。 –