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