簡體   English   中英

R將公式傳遞給函數中的數據框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM