【发布时间】:2016-03-30 05:27:04
【问题描述】:
有人能解释一下为什么下面的 dplyr mutate 调用(我应用一个将一列作为参数来设置新列的值的函数)不起作用吗?它似乎没有在正确的值上调用函数:新的season 列是根据mon 列中的第一个值而不是它自己行中的值设置的。
# Function to return season (winter, summer, or transition) given numerical month
getSeason <- function(m) {
if(m >= 11 || m <= 3)
return(as.factor("Winter"))
if(m >= 5 && m <= 9)
return(as.factor("Summer"))
return(as.factor("Trans"))
}
getSeason(5) # Works: returns "Summer"
mon <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
months <- as.data.frame(mon)
months %>% mutate(season=getSeason(mon)) # doesn't work: all seasons set as "Winter"
我正在使用 R 版本 3.2.4 和 dplyr 的最新开发版本。 (这在 dplyr 的最新版本中也不起作用。)
【问题讨论】: