【发布时间】:2017-06-13 21:36:17
【问题描述】:
我创建了一个函数来根据 id 减去我的一些数据。在dplyr 更新之前,该功能运行良好。最初,该函数不接受列名作为函数的输入。我使用Programming with dplyr 调整函数以接受列名,但是我现在收到一条新的错误消息。
testdf <- structure(list(date = c("2016-04-04", "2016-04-04", "2016-04-04",
"2016-04-04", "2016-04-04", "2016-04-04"), sensorheight = c(1L,
16L, 1L, 16L, 1L, 16L), farm = c("McDonald", "McDonald",
"McDonald", "McDonald", "McDonald", "McDonald"
), location = c("4", "4", "5", "5", "Outside", "Outside"), Temp = c(122.8875,
117.225, 102.0375, 98.3625, 88.5125, 94.7)), .Names = c("date",
"sensorheight", "farm", "location", "Temp"), row.names = c(NA,
6L), class = "data.frame")
DailyInOutDiff <- function (df, variable) {
DailyInOutDiff04 <- df %>%
filter(location %in% c(4, 'Outside')) %>%
group_by(date, sensorheight, farm) %>%
arrange(sensorheight, farm, location) %>%
summarise(Diff = if(n()==1) NA else !!variable[location=="4"] - !!variable[location=='Outside'],
location = "4") %>%
select(1, 2, 3, 5, 4)
DailyInOutDiff05 <- df %>%
filter(location %in% c(5, 'Outside')) %>%
group_by(date, sensorheight, farm) %>%
arrange(sensorheight, farm, location) %>%
summarise(Diff = if(n()==1) NA else !!variable[location=="5"] - !!variable[location=='Outside'],
location = "5") %>%
select(1, 2, 3, 5, 4)
temp.list <- list(DailyInOutDiff04, DailyInOutDiff05)
final.df = bind_rows(temp.list)
return(final.df)
}
test <- DailyInOutDiff(testdf, quo(Temp))
我想知道错误消息的含义以及如何修复它。
Error in location == "4" :
comparison (1) is possible only for atomic and list types
【问题讨论】: