R 使用列名字符串作为函数参数来引用列

时间:2021-01-08 11:53:10

标签: r

我一直试图在一个函数中计算 data.frame 中列的平均值,我传递了 data.frame 和要计算的列的名称,但我无法这样做

这是一个数据示例

aleatorio<-rnorm(1:52)
cod_prov<-c(1:52)
datosprov<-cbind(cod_prov, aleatorio)
rm(aleatorio,cod_prov)

这是功能

prueba<-function(bbdd,varmap){
  forMap<-noquote(paste0(substitute(bbdd),"$",substitute(varmap)))
  mean(forMap)
}

 
prueba(datosprov,"positivo")

2 个答案:

答案 0 :(得分:2)

这应该适用于 data.frames。正如@jay.sf 在评论中正确指出的那样,@Otto Kässis 方法更安全,因为它适用于 data.frames 和矩阵。如果您想使用裸名称而不是字符串来选择 data.frame 中的变量,下面的方法很有用。

prueba <- function(bbdd,varmap){
  mean(bbdd[[substitute(varmap)]])
}

prueba(iris, Sepal.Length)
#> [1] 5.843333

reprex package (v0.3.0) 于 2021 年 1 月 8 日创建

答案 1 :(得分:1)

您可以通过 df[,'colname'] 访问数据框中的列,即

 prueba<-function(bbdd,varmap){
   forMap<-bbdd[,varmap]
   mean(forMap)
 }

>  prueba(datosprov,"aleatorio")
[1] -0.1167871
相关问题