如何通过函数参数基于提供的列名对R数据帧进行子集划分?
我试图基于给定的数据帧创建一个R函数作为第一个参数,根据提供的参数对数据帧进行子集: 例如,我的df如下所示:如何通过函数参数基于提供的列名对R数据帧进行子集划分?,r,R,我试图基于给定的数据帧创建一个R函数作为第一个参数,根据提供的参数对数据帧进行子集: 例如,我的df如下所示: Date Server1 Server2 Server3 Server4 1/1/2004 10 20 10 5 2/1/2014 4 4 4 20 3/2/2014 1 5 5 39 data<-function(x, ...) { su
Date Server1 Server2 Server3 Server4
1/1/2004 10 20 10 5
2/1/2014 4 4 4 20
3/2/2014 1 5 5 39
data<-function(x, ...) {
subset(x, select=c("Server1","Server3", "Server4"))
}
subset2<-function(x, ...) {
cols <- c(...)
subset(x, select=cols)
}
subset2(dat, "Server1", "Server3", "Server4")
我需要将此df子集:
例如,如果我传递给此函数(x、Server1、Server3、Server4),它将如下所示:
Date Server1 Server2 Server3 Server4
1/1/2004 10 20 10 5
2/1/2014 4 4 4 20
3/2/2014 1 5 5 39
data<-function(x, ...) {
subset(x, select=c("Server1","Server3", "Server4"))
}
subset2<-function(x, ...) {
cols <- c(...)
subset(x, select=cols)
}
subset2(dat, "Server1", "Server3", "Server4")
data如果将参数作为字符串传递,它应该可以像这样工作:
Date Server1 Server2 Server3 Server4
1/1/2004 10 20 10 5
2/1/2014 4 4 4 20
3/2/2014 1 5 5 39
data<-function(x, ...) {
subset(x, select=c("Server1","Server3", "Server4"))
}
subset2<-function(x, ...) {
cols <- c(...)
subset(x, select=cols)
}
subset2(dat, "Server1", "Server3", "Server4")
subset2也许您应该重新考虑是否确实需要在subset
周围使用包装函数。就我所见,您想要的函数与subset
本身的功能相同,并且需要相同的参数,但sintax略有不同
在任何情况下,如果您不知道列名,可以改用列索引(例如subset(x,select=c(1,3,4)
)。摆脱subset,因为在其帮助页面上,它在警告中特别指出,它仅用于交互用途。我不认为这里有问题,您可以简单地执行以下操作:
data<-function(x, select, ...) {
tmp <- x[select]
# do some stuff with it
return(tmp)
}