【发布时间】:2017-04-27 23:06:33
【问题描述】:
有人告诉我,将方程作为字符串传递并评估它们是不好的做法。我怎样才能创建一个函数,它接受一个方程并在没有字符串版本且不使用第三方包的情况下对其进行评估?
这是我的功能:
replaceFormula <- function(df, column, formula){
df[column] <- eval(parse(text=formula), df)
return(df)
}
这是我的用例:
set.seed(24)
dataset <- matrix(sample(c(NA, 1:5), 25, replace = TRUE), 5)
df <- as.data.frame(dataset)
replaceFormula(df, 'V5', 'V3+V4')
更新:
这也有条件吗? 我的示例函数:
replaceFactor <- function(df, column, condition, what){
df[column] <- sapply(df[column],function(x) ifelse(eval(parse(text=condition), df), what, x))
return(df)
}
我的用例:
set.seed(24)
dataset <- matrix(sample(c(NA, 1:5), 25, replace = TRUE), 5)
df <- as.data.frame(dataset)
replaceFactor(df, 'V5', 'V1==1', 'GOOD')
【问题讨论】:
-
查看帮助页面'?reformulate'。
-
根据你的新情况,我更新了我的帖子。请检查这是否是您想要的
标签: r