如何使函數根據需要使用一對或多對值(x1,y1; x2,y2; ...)子集等根據數據的一個或多個值創建子集函數。框架
selection <- function(x1,y1, ...){
dfselected <- subset(df, V1 == "x1" & V2 == "y1"
## MAY OR MAY NOT BE PRESENT ##
| V1 == "x2" & V2 == "y2")
return(dfselected)
}
一個數據幀I可以與subset()
做到這一點對一個單一的索引。例如:
df <- data.frame(
V1 = c(rep("a",5), rep("b",5)),
V2 = rep(c(1:5),2),
V3 = c(101:110)
)
即
V1 V2 V3
a 1 101
a 2 102
a 3 103
a 4 104
a 5 105
b 1 106
b 2 107
b 3 108
b 4 109
b 5 110
而對夫婦( 「一」, 「3」)的子集和( 「B」, 「4」)的外觀喜歡
dfselected <- subset(df, V1 == "a" & V2 == 3 | V1 == "b" & V2 == 4)
我找不到類似的功能。我不知道是否必須將一個未指定數量的參數傳遞給一個函數(所謂的「三點」)或使用if/else
。我是一名初學者,所以我們也歡迎鏈接或例子。 我開始主要是與:http://www.ats.ucla.edu/stat/r/library/intro_function.htm
------------------------------解決方案哈德利的答覆後
selection <- function (x,y){
match <- data.frame(
V1 = x,
V2 = y,
stringsAsFactors = FALSE
)
return(dplyr::semi_join(df, match))
}
太好了!我把它在一個函數中打開(請參閱我的問題的編輯) – nebi