我有一个这样的数据框:
dataset <- matrix(sample(c(NA, 1:5), 25, replace = TRUE), 5)
df <- as.data.frame(dataset)
我希望获得一个新的数据框,其中包含一个新的列名&#34; V6&#34;这是基于我想通过函数传递的条件:
testDF <- createFactor(df,
'V6',
c('V1>V2', 'V3>V5', 'V2<V5'),
c('low', 'medium', 'high'))
到目前为止,这是我的尝试:
createFactor <- function(df, column, equation, factors){
eq <- equation
fa <- factors
df[column] <- ifelse(eval(parse(text=eq[1]), df), fa[1],
ifelse(eval(parse(text=eq[2]), df), fa[2],
ifelse(eval(parse(text=eq[3]), df), fa[3], 'NULL')))
return(df)
}
我知道我可以嵌套ifelse()并获得我想要的输出但是如果我不知道参数的数量,我该如何嵌套。如果我想通过十个条件怎么办?我怎样才能建立这样的功能。条件可以相互排斥。 有一个简单的解决方案,这也是有效的吗?提前谢谢。