我正在为我正在处理的包编写一个print方法。它的基本任务是显示按日期分组的一组任务。因为在控制台上工作意味着打印的最后一件事最接近提示,所以我希望最后列出最旧的日期。没有打印方法和调度的所有麻烦,核心代码就是这样的:
d <- data.frame(thr = as.Date(Sys.time()) + seq(-3,3,1),
tsk = paste0('t', 1:7), stringsAsFactors = FALSE)
d %>% group_by(thr) %>%
do(x = {
thr <- format(.$thr, '%d-%m-%Y')
cat(thr, '\n', .$tsk, '\n')
})
这会生成
02-09-2015
t1
03-09-2015
t2
04-09-2015
t3
05-09-2015
t4
06-09-2015
t5
07-09-2015
t6
08-09-2015
t7
但是我想按时间倒序排序,以便最后打印最旧的日期:
08-09-2015
t7
07-09-2015
t6
...
在普通(非打印代码)中,使用编号(-thr)很容易,但是我还没有找到在打印功能中执行此操作的方法。
答案 0 :(得分:3)
library(dplyr)
library(magrittr)
data.frame(thr = as.Date(Sys.time()) + c(seq(-3,3,1), seq(-3,3,1)),
tsk = paste0('t', c(1:14)), stringsAsFactors = FALSE) %>%
arrange(tsk) %>%
group_by(thr) %>%
summarize(
tsk_out =
paste(
thr %>% first %>% format('%d-%m-%Y'),
'\n',
tsk %>% unique %>% paste(collapse = " "),
'\n') ) %>%
arrange(desc(thr)) %>%
use_series(tsk_out) %>%
cat
答案 1 :(得分:1)
NA的答案移到了顶部。
library(dplyr)
library(magrittr)
options(stringsAsFactors = FALSE)
data.frame(thr =
as.Date(Sys.time()) + c(seq(-3,3,1), seq(-3,3,1)) %>%
c(NA),
tsk = paste0('t', 1:15)) %>%
arrange(tsk) %>%
group_by(thr) %>%
summarize(
tsk_out =
paste(
thr %>% first %>% format('%d-%m-%Y'),
'\n',
tsk %>% unique %>% paste(collapse = " "),
'\n') ) %>%
arrange(thr %>% order(na.last = FALSE, decreasing = TRUE)) %>%
use_series(tsk_out) %>%
cat