R 嵌套';ifelse';返回此错误的语句:';多参数只能是';第一'';最后';或';全部'';

R 嵌套';ifelse';返回此错误的语句:';多参数只能是';第一'';最后';或';全部'';,r,nested,data.table,R,Nested,Data.table,SO/R新手,所以提前感谢您对我的耐心。我试图在R中使用一个简单的if/else语句,它创建一个列,并根据不同列的值填充三个类别的High/Medium/Low 我得到的错误是‘mult参数只能是‘first’、‘last’或‘all’。我发现关于这个错误的文档非常少,我知道我的问题可能很简单 再次重申,我对这一点非常陌生。提前感谢您的帮助。一个更有效的方法也是我非常愿意听到的 zips3[, PW_Data := ifelse(pctr08zip_updated > 0.4 &

SO/R新手,所以提前感谢您对我的耐心。我试图在R中使用一个简单的if/else语句,它创建一个列,并根据不同列的值填充三个类别的High/Medium/Low

我得到的错误是‘mult参数只能是‘first’、‘last’或‘all’。我发现关于这个错误的文档非常少,我知道我的问题可能很简单

再次重申,我对这一点非常陌生。提前感谢您的帮助。一个更有效的方法也是我非常愿意听到的

zips3[, PW_Data := ifelse(pctr08zip_updated > 0.4 & pctr08zip_updated <=0.5), "Poop",
                                    ifelse(pctr08zip_updated > 0.5 & pctr08zip_updated <=0.6), "Poop2",
                                           ifelse(pctr08zip_updated > 0.6 & pctr08zip_updated <=0.7), "South", "Exclude"]

zips3[,PW_Data:=ifelse(pctr08zip_updated>0.4&pctr08zip_updated 0.5&pctr08zip_updated 0.6&pctr08zip_updated问题与ifelse无关,与不正确匹配(and)有关,这意味着您正在向Data.table传递额外参数。语法为
ifelse(condition,trueresult,falsesult)
类似于
ifelse(1:3<3,TRUE,FALSE)
,而不是像您这样的
ifelse(1:3<3),TRUE,FALSE)
,根本无法正常工作。例如,匹配括号可以使其正常工作:

library(data.table)
zips3 <- data.table(pctr08zip_updated=seq(0L,10L,1L)/10)

zips3[,
  PW_Data := 
    ifelse(pctr08zip_updated > 0.4 & pctr08zip_updated <=0.5, "Poop",
    ifelse(pctr08zip_updated > 0.5 & pctr08zip_updated <=0.6, "Poop2",
    ifelse(pctr08zip_updated > 0.6 & pctr08zip_updated <=0.7, "South", 
    "Exclude")))
]
我在这里单独指定标签,因为对于超出范围的高值和低值,有一个重复的输出。它给出了相同的结果:

identical(zips3$PW_Data, zips3$PW_Data_cut)
#[1] TRUE

identical(zips3$PW_Data, zips3$PW_Data_cut)
#[1] TRUE