我想在函数内部创建一个数据框,该数据框是数据框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)中的错误:缺少参数,没有默认值
或者,我可以在一个步骤中选择列名而不是选择然后进行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"))
答案 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")