我喜欢dplyr的"progress_estimated"功能,但我无法弄清楚如何在dplyr链中使用进度条.我在这里放置了一个代码可重复的示例.
我有一个非常大的data.frame像这样:
cdatetime latitude longitude
1 2013-01-11 06:40:00 CST 49.74697 -93.30951
2 2013-01-12 15:55:00 CST 49.74697 -93.30951
3 2013-01-07 20:30:00 CST 49.74697 -93.30951
Run Code Online (Sandbox Code Playgroud)
我想用图书馆计算每个日期的日出时间
library(dplyr)
library(StreamMetabolism)
Run Code Online (Sandbox Code Playgroud)
我可以让dplyr的progress_estimated栏在循环中工作,例如:
丑陋的循环(工程)
p <- progress_estimated(nrow(test))
for (i in 1:nrow(test)){
p$tick()$print()
datetime = as.POSIXct(substr(test$cdatetime[i], 1, 20), tz = "CST6CDT")
test$sunrise[i] <- sunrise.set(test$latitude[i], test$longitude[i], datetime, "CST6CDT", num.days = 1)[1,1]
}
Run Code Online (Sandbox Code Playgroud)
但是我怎么能把它嵌入我的函数中,所以我可以避免使用循环?
更喜欢使用:
SunriseSet <- function(dataframe, timezone){
dataframe %>%
rowwise() %>%
mutate(# calculate the date-time using the correct timezone
datetime = as.POSIXct(substr(cdatetime, 1, 20), tz = timezone), …Run Code Online (Sandbox Code Playgroud) 有谁知道是否tidyr::complete()支持分组通过group_by()?
确切地说:我有一些看起来像这样的数据框
df <- data.frame(
"ID" = rep(1:2, each = 2),
"Col1" = c("A", NA, "AA", NA),
"Col2" = c("B", "C", "BB", "CC"))
Run Code Online (Sandbox Code Playgroud)
现在我想使用complete()和group_by()计算每组的所有可能组合!
df %>%
group_by(ID) %>%
complete(Col1, Col2)
Error in .Call("dplyr_left_join_impl", PACKAGE = "dplyr", x, y, by_x, :
negative length vectors are not allowed
Run Code Online (Sandbox Code Playgroud)
这会导致错误.但是,使用complete()没有分组工作,但这不是我想要的.
df %>%
complete(Col1, Col2)
Run Code Online (Sandbox Code Playgroud)
问题:
complete()不合作group_by?