【问题标题】:Create function that subsets by flexible values in R在 R 中创建通过灵活值进行子集化的函数
【发布时间】:2023-03-10 18:55:01
【问题描述】:

我想创建一个函数,它采用给定参数的各种值和任意数量的子集。例如,在以下函数中,我希望该函数采用“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 年的总和。关于如何更改函数以使其可以采用任何“年”范围的想法有什么想法吗?谢谢。

【问题讨论】:

  • 为什么要在2002c(2002, 2004)周围加上引号?

标签: r function subset


【解决方案1】:

使用 %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"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    相关资源
    最近更新 更多