根据参数的未知长度条件替换数据框中的列

时间:2017-04-23 20:29:07

标签: r

我有一个这样的数据框:

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()并获得我想要的输出但是如果我不知道参数的数量,我该如何嵌套。如果我想通过十个条件怎么办?我怎样才能建立这样的功能。条件可以相互排斥。 有一个简单的解决方案,这也是有效的吗?提前谢谢。

0 个答案:

没有答案