【发布时间】:2018-01-17 22:55:27
【问题描述】:
top5 <- ifelse(state = "PA", c("Oranges", "Bananas", "Avocados", "Tomatoes", "Cucumbers"),
ifelse(state = "MA"), c("Oranges", "Bananas", "Peaches", "Leaves", "Cucumbers"),
ifelse(state = "ME"), c("Oranges", "Bananas", "Avocados", "Tomatoes", "Watermelon"),
ifelse(state = "NH"), c("Tea", "Bananas", "Avocados", "Tomatoes", "Cucumbers"),
ifelse(state = "RI"), c("Oranges", "Coconuts", "Avocados", "Tomatoes", "Cucumbers"),
ifelse(state = "VT"), c("Carrots", "Bananas", "Apples", "Tomatoes", "Cucumbers"))
以上是我目前所拥有的。我想根据函数的输入分配相应的向量。我将它放在一个函数中,尽管即使在函数之外我也无法让它工作。谢谢。
响应答案,这是很好的解决方案。但是,我希望将这些向量之一传递到基于标准的变量中,但这是行不通的。
我需要这样做的原因是稍后调用该向量,以通过与该状态匹配的相应向量过滤该状态的数据。
例如 PA 的前五种水果是:“橙子”、“香蕉”、“鳄梨”、“西红柿”、“黄瓜”。如果函数需要 PA,我需要将其分配给变量,以便该函数稍后可以将数据过滤到仅这些水果。这是我的完整代码:
FruitAnalyses <- function(statefile,state)
top5 <- ifelse(state = "PA", c("Oranges", "Bananas", "Avocados", "Tomatoes", "Cucumbers"),
ifelse(state = "MA"), c("Oranges", "Bananas", "Peaches", "Leaves", "Cucumbers"),
ifelse(state = "ME"), c("Oranges", "Bananas", "Avocados", "Tomatoes", "Watermelon"),
ifelse(state = "NH"), c("Tea", "Bananas", "Avocados", "Tomatoes", "Cucumbers"),
ifelse(state = "RI"), c("Oranges", "Coconuts", "Avocados", "Tomatoes", "Cucumbers"),
ifelse(state = "VT"), c("Carrots", "Bananas", "Apples", "Tomatoes", "Cucumbers"))
statefile <- fread(paste0(state,"_fruit.csv"), header = T, data.table = F,
stringsAsFactors = F, na.strings = c(",,",""," "))
#Lower names and convert to tbl
names(statefile) <- tolower(names(statefile))
statefile <- as.tbl(statefile)
#Parse Month and Year into single string - This is for later use when
dates <-mdy(statefile$fruitstartdate)
statefile <- statefile %>%
mutate(Month = month(dates, label = T))
rm(dates)
statefileGrouped <- statefile %>%
filter(priorfruitgroup %in% top5) %>%
group_by(priorfruitgroup, Month) %>%
summarise(TotalSeriousFruit = sum(seriousfruit),
TotalFruitCount = sum(fruit)) %>%
arrange(Month)
fwrite(statefileGrouped,file=paste0(state,".csv"))
barplot <- ggplot(statefileGrouped, aes(x=Month, y=Totalfruitcount,
fill=TotalotherfruitCount)) +
geom_bar(color="black",stat="identity") +
facet_grid(.~priorfruitgroup)
return(barplot)
}
忽略变量名称的差异,出于保密原因,我不得不更改一些名称。然而,这不是问题的主要主题。我想知道为什么 top5 不会根据标准正确分配给向量。
【问题讨论】:
-
我认为一个可能的解决方案是将所有内容分组到列表中,然后将其调用到我的变量中:top5
标签: r if-statement