我想创建一个函数,该函数为给定的参数和子集取任意数量的各种值。例如,在以下函数中,我喜欢使用" 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;?谢谢。
答案 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"))