创建一个函数来接收 R 中的数据框名称和列

Creating a function to take in dataframe name and column in R

我想创建一个函数,让我输入数据框名称和列以及 return 其插补值的行均值(已经通过鼠标对每一列进行了插补

#fillNA values for columns
fillna_func <- function(data, col){
  df <- data.frame(rowMeans(imp_model$imp$col))
  brf <- data.frame(data[, col])
  colnames(brf) <- "col2"
  colnames(df) <- "col2"
  brf$col1 <- rownames(brf)
  df$col1 <- rownames(df)
  setDF(brf[df,col2_ :=i.col2,on=.(col1)])
  }
brfss2013$X_bmi5 <-  fillna_func(brfss2, "X_bmi5" )
brfss2013$X_bmi5 <-  fillna_func(brfss2, "pa1min_" )

然而这是我收到的回溯:

Error in rowMeans(imp_model$imp$col) : 
  'x' must be an array of at least two dimensions 
4.
stop("'x' must be an array of at least two dimensions") 
3.
rowMeans(imp_model$imp$col) 
2.
data.frame(rowMeans(imp_model$imp$col)) 
1.
fillna_func(brfss2, "X_bmi5") 

使用以下代码设法解决了这个问题:

fillna_func <- function(data, column){
  df <- data.frame(rowMeans(imp_model$imp[[column]]))
  brf <- data.frame(data[[column]])
  colnames(brf) <- "col2"
  colnames(df) <- "col2"
  brf$col1 <- rownames(brf)
  df$col1 <- rownames(df)
  setDF(brf[df,col2_ :=i.col2,on=.(col1)])
  }
brfss2013$X_bmi5 <-  fillna_func(brfss2, "X_bmi5" )

在此 [[]] 中包装列号似乎有助于解决直接引用我试图在我的函数中使用的列的问题