【问题标题】:Potential bug in as.list.Date (the R programming language) [closed]as.list.Date(R 编程语言)中的潜在错误 [关闭]
【发布时间】:2015-04-25 13:29:06
【问题描述】:

在我看来,以下对于任何矢量类型都应该是正确的。

all(names(as.list(x)) == names(x))

我这么说是因为我尝试了几种原子类型,而且它是合理的。

但有日期:

> dd = as.Date(c("1950-01-01", "2050-01-01" ))
> names(dd)  = c("from", "to")
> dd
        from           to 
"1950-01-01" "2050-01-01" 
> as.list(dd)
[[1]]
        from 
"1950-01-01" 

[[2]]
          to 
"2050-01-01" 

你怎么看? R 错误或我的想法中的错误?

PS:我有一个解决方法,谢谢

【问题讨论】:

  • 我投票关闭主要是基于意见,因为只有 R 核心成员才能确认这是否是一个错误。
  • 你可能会在r-devel@r-project.org 上做得更好...
  • ... 有一个可重现的例子。
  • 你能发布一个可重现的例子吗?我们没有看到名为dd 的对象:all(names(as.list(as.Date("1970-01-01"))) == names(as.Date("1970-01-01")) ); #[1] TRUE
  • 这也不适用于因子;你认为那些是原子类型吗?我不确定这是一个错误,因为它不是您预期的行为。

标签: r list date type-conversion


【解决方案1】:

您的示例似乎也因因素而失败

x <- factor(c("one","two"))
names(x) <- c("a","b")
x

#   a   b 
# one two 
# Levels: one two

as.list(x)

# [[1]]
#   a 
# one 
# Levels: one two
# 
# [[2]]
#   b 
# two 
# Levels: one two

也是原子类型

is.atomic(x)
# [1] TRUE

所以日期不会发生这种情况。在这种情况下,我不愿意将其称为错误,因为我不相信任何特定行为都可以在任何地方记录名称。然而不幸的是,与数字或字符向量相比,结果不一致。

【讨论】:

    猜你喜欢
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 2011-08-20
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多