【发布时间】:2018-01-27 00:24:09
【问题描述】:
我有一个带有这样签名的函数:
myFunction=function(class="Class",v1='y',v2='y',dfparam=df){
其中df是一个数据框,假设df中有一个名为Class的属性。我想让它更通用,以便它可以接受各种数据帧 df,而不仅仅是一个具有名为 Class 的属性的数据帧。
所以我添加了一个className参数和classValue参数来替换类参数。另外,我想允许无限的参数 v1、v2、v3 等,所以我使用这样的省略号:
myFunctionGeneral = function(className="Class", classValue="democrat", dfparam=df, ...){
arguments <- list(...)
在使用省略号之前,我有一行使用以下参数:
X_bool=dfparam$V1==v1 & dfparam$V2==v2
我开始这样做了:
X_bool=dfparam[,2]==arguments[1] & dfparam[,3]==arguments[2]
但我想为省略号中无限数量的可能参数执行此操作。 所以我需要通过某种方式解开省略号来扩展这个陈述。 这是一个例子:
install.packages("vcd")
library(vcd)
data(Arthritis)
AAr=Arthritis[,-c(1,4)]
myFunctionGeneral=function(className="Class",classValue="democrat",dfparam=df, ...){
dfparam$names<-rownames(dfparam)
arguments<-list(...)
dfparamDroppedClass=dfparam[,-1]
#X_bool=dfparam[,2]==arguments[1] & dfparam[,3]==arguments[2]
X_bool=do.call(all, Map("==", dfparamDroppedClass, arguments))
X=dfparam[X_bool,]
}
【问题讨论】: