如何在R函数中传递列名?

时间:2017-01-18 00:43:45

标签: r

我想在函数内部创建一个数据框,该数据框是数据框d

中的一组列
QPP<-function(dat,xvar,yvar){
  varx <<- dat[,c(xvar)]
  vary <<- dat[,c(yvar)]
  a <- cbind(varx,vary) 
  a <- as.data.frame(a)
  #Perform some operations
}

QPP(dat=d,xvar = area,yvar = f.ecdf)

但是我收到一条错误消息:

  

eval(expr,envir,enclos)中的错误:缺少参数,没有默认值

  1. 我该如何解决这个问题?
  2. 或者,我可以在一个步骤中选择列名而不是选择然后进行cbinding吗?我不知道如何传递列名。

    dput(droplevels(head(d,10)))
    structure(list(area = c(96.8656, 96.8656, 562.0274, 117.5855, 
    117.5855, 117.5855, 117.5855, 117.5855, 117.5855, 117.5855), 
    tp = c(1.5, 1, 0.5, 4.5, 6, 8.25, 4.25, 5.75, 10.75, 20.25
    ), f.ecdf = c(0.887918176006819, 0.812380140634988, 0.760387811634349, 
    0.0372895802258683, 0.00809716599190283, 0.0310036224163648, 
    0.300660558278287, 0.441721713189857, 0.152354570637119, 
    0.386852759428937)), .Names = c("area", "tp", "f.ecdf"), row.names = c(NA, 
    -10L), class = c("data.table", 
    "data.frame"))
    

1 个答案:

答案 0 :(得分:3)

你的功能非常好。传递参数的方式存在问题。您应该将字符串作为变量名称传递。

试试这个QPP(dat=d,xvar = "area" ,yvar = "f.ecdf")

现在,这是因为如果你注意到df[,c("col_name")]参数&#34; col_name&#34;是字符串

关于您的问题2:这是您在不使用cbind

的情况下一步完成的方法
QPP<-function(dat,xvar,yvar)
{
colnames<- c(xvar, yvar)
new_df <<- dat[, c(colnames)]
}

QPP(dat=d,xvar = "area" ,yvar = "f.ecdf")