r - 如果按索引或按值打印,则在 for 循环内打印值会给出不同的结果

标签 r

我试图理解为什么当我通过索引或直接访问它们时打印列表的值时会得到不同的结果:

ws <- c(as.Date('2016-01-01'))

for (w in ws) {
  print(w)  
}
# prints 16801

for (idx in 1:length(ws)) {
  print(ws[idx])
}
# prints 2016-01-01

我不确定为什么第一次使用 in 访问值时,我得到了错误的值。

如何打印通过 in 直接访问的值(不使用索引)?还有为什么会这样?

最佳答案

可能是因为ws实际上是一个整数;您看到的“日期”仅用于打印目的,但数据会按照从起点开始的天数进行跟踪。

当您在 ws 中创建索引变量 w 时,R 可能会将其强制为整数,因此 w 已丢失所有“日期”属性,而您得到的只是是基础整数。

确实,在 ?Control 中我们看到 seq:

An expression evaluating to a vector (including a list and an expression) or to a pairlist or NULL. A factor value will be coerced to a character vector.

并且 as.vector(ws) 将返回 ws 到它的基础、整数、状态。

在您的第二个示例中,ws 保持不变,因此它的打印元素将继续被格式化为日期。

关于r - 如果按索引或按值打印,则在 for 循环内打印值会给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39374976/

相关文章:

r - geom_bar(position = "dodge") 中条的宽度相同

r - 错误消息 JAGS 子集超出范围

r - R 中的不对称 fiddle 图或背靠背密度图

r - 使用 R 中的预测包分组

r - r 中的 MATCH 函数

r - 将额外的图插入多面网格,ggplot2

r - 如何将 mclust 中的聚类结果写入文件?

R在导入xlsx时自动将日期转换为字符串

R 使用高阶函数为矩阵中的所有行提供附加标识

r - strptime 无法识别 %b/%B?