我正在尝试执行此代码,但获得结果NA。
> node1<- paste0("train$", rule, collapse=" & ")
> node1
[1] "train$feat_11< 5.477 & train$feat_60< 4.687"
>x<-ifelse(node1,1,0)
[1] NA
如何在if else函数中使用字符向量?
答案 0 :(得分:3)
逻辑向量和字符向量是R中的两个非常不同的东西。
class(node1)
#>[1] "character"
您必须首先解析并评估字符串。
lNode1 = eval(parse(text=node1))
class(lNode1)
#>[1] "logical"
x<-ifelse(lNode1,1,0)
#>a list of 1's and 0's
尽管如此,你的ifelse
陈述是多余的。当以需要它的方式使用时,逻辑向量将强制转换为整数向量。例如,您可以sum(lNode1)
获取通过这两个规则的次数。