【问题标题】:looping through list of dates in R循环遍历 R 中的日期列表
【发布时间】:2018-10-01 15:13:27
【问题描述】:

这是我的例子:

test_list <- c(as.Date('2017-03-08','2017-03-08' ))

    for(el in test_list){
      print(el)
    }

它生成: 17641

这是日期表示。我很好奇为什么 R 会这样。

【问题讨论】:

  • 试试:test_list &lt;- list(as.Date('2017-03-08'),as.Date('2017-03-08' ))
  • @PierreLapointe 我尝试了你的建议并得到了回复:"2018-04-20"
  • 应该是as.Date(c('2017-03-08','2017-03-08' ))

标签: r date representation


【解决方案1】:

您究竟想找回什么? 一次'2017-03-08'还是两次如下代码?

test_list <- as.Date(c('2017-03-08','2017-03-08'))

for(el in test_list){
   print(as.Date(el, origin = "1970-01-01"))
}

【讨论】:

    【解决方案2】:

    Pierre Lapointe 是正确的,在 as.Date 中调用多个参数是您的问题的一部分。

    数字17641how R stores dates 有关。调用test_list 产生"2018-04-20",我猜这意味着它添加了这两个日期。

    R 中的起始日期是1970-01-01。如果你添加17641,你会得到2018-04-20。所以 R 返回与您的日期相对应的整数,这可以通过调用 class(el) 来验证,这是有道理的,因为在循环中,您通过它们的序数(条例?)来引用 test_list 中的元素

    以下内容对我来说很好。我不确定为什么,但如果它没有坏,就不要修理它!

    for (el in 1:length(test_list)){
      print(test_list[el])
    }
    

    【讨论】:

    • 我认为你没有抓住重点。这些值都不是今天日期的打印表示。问题在于将两个字符值传递给as.Date 函数并让format 参数接收第二个值。
    • @42- “这是日期表示。我很好奇为什么 R 会这样”。在我看来,这个问题似乎是询问为什么as.Date 会产生一个整数。这不是问题的唯一可能解释,但 Pierre 已经涵盖了您的解释
    • 如果有两个数字,您的解释可能是“正确答案”的一部分,并且它们实际上与作为输入给出的日期有某种联系,但这些条件都不是很满意。然后你说你得到了正确的结果,代码不可能是 OP 作为起点给出的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    相关资源
    最近更新 更多