基于函数字符参数在R中子集数据框

Subsetting data frame in R, based on function character parameter

我需要从 CSV 中的大型数据集中选择一列。

我有这个功能。两个字符参数 - 是州名称和疾病名称。根据疾病名称,我需要在大型数据集中选择正确的列来执行计算。

best <- function(state, outcome) {

  OutcomeData <- read.csv("outcome-of-care-measures.csv", colClasses = "character")

其次,我尝试根据函数参数结果为变量 OutcomeCol 分配一个值。 Number 是 OutcomeData 数据集中对应 outcome 参数的列号。

I 
  ## 2 - Hospital.Name
  ## 7 - State
  ## 11 - 30 Day mortality Heart Attack
  ## 17 - 30 Day mortality Heart Failure
  ## 23 - 30 Day mortality Pneumonia

  ## Choose Outcome for filtering data
  if (outcome == "heart attack") {OutcomeCol <- 11}
  if (outcome == "heart failure") {OutcomeCol <- 17}
  if (outcome == "pneumonia") {OutcomeCol<- 23}
  try(if (!exists("OutcomeCol")) {stop("invalid outcome")}, silent = TRUE)

但是当我尝试 运行 发挥最佳功能时("TX","heart failure")什么也没有发生。如果我尝试在 if 语句之后放置 print(OutcomeCol) - 它 returns NA.

哪里出错了?也许还有另一种简单的方法来执行此操作?

所以我找到了另一种方法 - 进行查找 table 是一个很好的方法(而不是一系列的 ifs!

  mortalityColumn <- c(11, 17, 23) lookup <- data.frame(outcomes, 
  mortalityColumn) OutcomeCol <- lookup$mortalityColumn[lookup$outcomes %in% outcome]