通过R中的灵活值创建子集的函数

时间:2014-11-14 18:45:16

标签: r function subset

我想创建一个函数,该函数为给定的参数和子集取任意数量的各种值。例如,在以下函数中,我喜欢使用" yr"的任何排列的函数。包括其中的多个:

set.seed(123)
frame <- data.frame(yr = sample(seq(2000,2004,1), 100, replace =TRUE), x = rnorm(100), y = rnorm(100))

sum.fun <- function(frame, year){
        print(sum(frame[frame$yr == year,]$x))
}

sum.fun(frame, "2002")
sum.fun(frame, "2004")

sum.fun(frame, c("2002", "2004"))

然而,最后一行并没有实际给出2002年和2004年的总和。任何关于如何改变功能的想法,以便它可以采取任何范围的&#34; yr&#34;?谢谢。

1 个答案:

答案 0 :(得分:3)

使用%in%而不是==

set.seed(123)
frame <- data.frame(yr = sample(seq(2000,2004,1), 100, replace =TRUE), x = rnorm(100), y = rnorm(100))

sum.fun <- function(frame, year){
        print(sum(frame[frame$yr %in% year,]$x))
}

sum.fun(frame, "2002")
sum.fun(frame, "2004")

sum.fun(frame, c("2002", "2004"))