我试图理解为什么当我通过索引或直接访问列表的值时打印列表的值时会得到不同的结果:
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
访问的值(不使用索引)?还有为什么会这样?
答案 0 :(得分:2)
可能是因为ws
实际上是一个整数;您看到的“日期”仅用于打印目的,但数据会在起点后的几天内进行跟踪。
当您创建索引变量w in ws
时,R可能会将其强制为整数,因此w
已丢失所有“日期”属性,而您获得的只是基础整数。
确实,在?Control
我们看到seq
:
评估向量的表达式(包括列表和 表达式)或者是一个pairlist或NULL。系数值将被强制执行 到一个字符向量。
as.vector(ws)
会将ws
返回给它的基础整数状态。
在您的第二个示例中,ws
保持不变,因此从中打印元素将继续格式化为日期。