【问题标题】:Filtering R package example datasets by class按类过滤 R 包示例数据集
【发布时间】:2021-09-08 13:28:47
【问题描述】:

我正在测试一些技术来检测失控的时间序列数据,使用闪亮来比较和对比不同的技术和设置。

作为测试数据,我想获取包含在包surveilance 中的所有示例数据集并过滤这些数据集,以便我只有那些属于sts 类的名称(监视时间序列)。然后我想要一个selectInput 填充过滤数据集的名称,并设置一个变量以指向由所选字符串命名的数据集(等于数据集名称)。像这样R 代码:

d <- data(package = "surveillance")
r <- d$results[, "Item"]
r <- r[class(??what here??) == "sts"]
...
.data <- data(input$dataset) # this won't work because input$dataset is of type character

请您帮我弄清楚如何过滤数据集名称,然后根据数据集名称的字符串值分配给变量。

【问题讨论】:

  • 也许sapply(r,function(x)class(disProg2sts(x))[1])

标签: r


【解决方案1】:

加载数据集的工作方式有点尴尬。这是一个提取数据类的辅助函数。我使用辅助函数将数据集加载到私有环境中,而不是默认的全局环境中。

d <- data(package = "surveillance")
r <- d$results[, "Item"]

check_data_class <- function(x, package=package) {
  env <- new.env()
  nm <- data(list=x, package=package, envir=env)
  class(env[[nm]])
}

cls <- sapply(r, check_data_class, package="surveillance")
names(cls[cls=="sts"])
#  [1] "abattoir"         "deleval"          "fluBYBW"         
#  [4] "ha.sts"           "measlesDE"        "measlesWeserEms" 
#  [7] "momo"             "rotaBB"           "salmAllOnset"    
# [10] "salmHospitalized" "salmNewport"      "stsNewport" 

这些都是具有“sts”类的所有数据对象。

通过字符串名称获取数据集的关键部分是使用list= 参数到data()。请注意,data() 实际上并没有返回数据本身。它使用给定的名称将数据加载到全局环境中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 2023-02-17
    • 2021-11-15
    • 1970-01-01
    相关资源
    最近更新 更多