[英]how do you subset R data frame based on provided column names via a function argument?
我正在嘗試基於給定的數據框架作為第一個參數創建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
我需要將此df子集:
例如,如果我傳遞給此函數(x,Server1,Server3,Server4),它將看起來像這樣:
data<-function(x, ...) {
subset(x, select=c("Server1","Server3", "Server4"))
}
但是,我不知道參數列表。 它應適用於所有不知道列名的數據幀。
有什么想法可以在R中完成嗎?
如果您將參數作為字符串傳遞,則應該可以像這樣正常工作:
subset2<-function(x, ...) {
cols <- c(...)
subset(x, select=cols)
}
subset2(dat, "Server1", "Server3", "Server4")
但是我不確定為什么需要這樣的包裝器。 也許我錯過了您的真正目標?
也許您應該重新考慮是否確實需要圍繞subset
的包裝函數。 據我所知,您想要的功能與subset
本身的功能相同,並且需要相同的參數,且其sintax稍有不同。
無論如何,如果您不知道列名,則可以改用列索引(例如, subset(x, select=c(1,3,4)
)。
擺脫子集,如其幫助頁面上特別指出的警告,該子集僅供交互使用。 我在這里看不到問題,您可以執行以下操作:
data<-function(x, select, ...) {
tmp <- x[select]
# do some stuff with it
return(tmp)
}
一個簡單的例子:
data(iris, c("Sepal.Width", "Species"))
# Sepal.Width Species
# 1 3.5 setosa
# 2 3.0 setosa
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.