【发布时间】:2015-09-12 06:21:25
【问题描述】:
我需要从 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”,“心力衰竭”)没有任何反应。如果我尝试在 if 语句之后放置 print(OutcomeCol) - 它会返回 NA。
错误在哪里?也许还有另一种简单的方法来执行此操作?
【问题讨论】:
-
您的函数没有
return值或结束}...或者您只是没有完整粘贴? -
谢谢@Frank!是的,这是功能中似乎不起作用的部分。我找到了另一种正确解决此问题的方法。
mortalityColumn <- c(11, 17, 23) lookup <- data.frame(outcomes, mortalityColumn) OutcomeCol <- lookup$mortalityColumn[lookup$outcomes %in% outcome] -
酷,很高兴听到你已经想通了。是的,制作一个查找表是一个好方法(而不是
ifs 的序列) -
是的。我正在为我的统计数据学习这个工具。所以第一步是困难的。谢谢!
标签: r function if-statement subset