簡體   English   中英

如何通過函數自變量基於提供的列名對R數據幀進行子集化?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM