我试图理解为什么当我通过索引或直接访问它们时打印列表的值时会得到不同的结果:
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/