小编Fus*_*cho的帖子

使用累计的输出差异

为什么这两个操作不同?

library(lubridate)
library(magrittr)

> seconds_to_period(1:1000) %>% cumsum %>% sum
[1] 14492440
> 1:1000 %>% cumsum %>% sum
[1] 167167000
Run Code Online (Sandbox Code Playgroud)

但是,我看到的问题是,该事实cumsum 仅增加了周期的秒数,而忽略了其余的时间

seconds_to_period(60) +  seconds_to_period(60)
[1] "2M 0S"
Run Code Online (Sandbox Code Playgroud)

> cumsum(c(seconds_to_period(60), seconds_to_period(60)))
[1] 0 0
Run Code Online (Sandbox Code Playgroud)

为什么此行为是默认形式?我认为这很不直观。此外,克服此问题并获得与cumsum(1:1000)使用“ Period”类润滑脂相同的结果的方法是什么,该方法不需要执行以下操作:

c(seconds_to_period(60), seconds_to_period(60)) %>% as.numeric %>% cumsum

r lubridate cumsum

7
推荐指数
1
解决办法
118
查看次数

使用for循环(R)更新ggplot

我在更新ggplot对象时遇到一些问题。我想做的是在每个循环中更改的特定位置放置一条垂直线,因此:多条线将显示在不同的位置。但是,当我使用for循环时,它仅显示创建的最后一行,但是当我手动执行时,它可以工作。我创建了一个可复制的示例,你们可以检查以下示例:

library(ggplot2)

x <- ggplot(mapping = aes(x = 1:100, y = 1:100)) +
  geom_line()

for(i in 1:6){
  x <- x + geom_vline(aes(xintercept = i*5))
}

y <- ggplot(mapping = aes(x = 1:100, y = 1:100)) +
  geom_line()

y <- y + geom_vline(aes(xintercept = 5))
y <- y + geom_vline(aes(xintercept = 10))
y <- y + geom_vline(aes(xintercept = 15))
y <- y + geom_vline(aes(xintercept = 20))
y <- y + geom_vline(aes(xintercept = 25))
y <- y + geom_vline(aes(xintercept = 30))
Run Code Online (Sandbox Code Playgroud)

检查两个图。为什么对我来说两个过程都做“相同”的事情,但第一个情节与第二个情节看起来却不一样?

for-loop r ggplot2

2
推荐指数
1
解决办法
884
查看次数

标签 统计

r ×2

cumsum ×1

for-loop ×1

ggplot2 ×1

lubridate ×1