[英]R Pass formula to dataframe in a function
我有一個帶有A列的數據框。
我想要一個這樣的功能:
myFunction <- function(df,term) {
df = df[,term]
return(df)
}
所以我可以這樣做:
myFunction(mydf,"sqrt('A')"))
或這個:
myFunction(mydf,"log('A')"))
我厭倦了用以下命令修改函數,但是沒有用:
df = df[,I(term)]
df = df[,as.formula(term)]
謝謝。
您可以將函數作為參數傳遞,這可能比發送函數字符串更好:
myFunction <- function(df,term,fun) {
vec = df[,term]
fun(vec)
}
data(iris)
# answers
sum(iris$Sepal.Width)
mean(iris$Sepal.Width)
# use 'Sepal.Width' column instead of 'A'
myFunction(iris,'Sepal.Width',sum)
myFunction(iris,'Sepal.Width',mean)
# using a function string
myFunctionStr <- function(df,term,funstr) {
vec = df[,term]
eval(call(funstr,vec))
}
myFunctionStr(iris,'Sepal.Width','sum')
myFunctionStr(iris,'Sepal.Width','mean')
一種將字符串作為代碼求值的方法如下:
eval(parse(text = 'sqrt(16)'))
如果這是完成任務的最佳方法,我將感到非常驚訝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.