【发布时间】:2021-06-17 15:57:36
【问题描述】:
我对以下行为感到困惑。
> tmpString <- Sys.time()
> tmpString
[1] "2021-06-17 11:50:52 EDT"
> gsub(" ", "_", tmpString)
[1] "2021-06-17_11:50:52"
> gsub(" ", "_", tmpString, fixed=TRUE)
[1] "2021-06-17_11:50:52"
为什么 tmpString 末尾的“EDT”会丢失?
为了完整性,
> R.version
_
platform x86_64-pc-linux-gnu
arch x86_64
os linux-gnu
system x86_64, linux-gnu
status
major 3
minor 6.3
year 2020
month 02
day 29
svn rev 77875
language R
version.string R version 3.6.3 (2020-02-29)
nickname Holding the Windsock
>
【问题讨论】:
-
时区添加在打印方法中。它实际上并未存储在您的数据中。
-
正如@Dason所说,时区是对象类的一部分。 Sys.time() 是 POSIXct / POSIXt 但是当您使用 gsub 时,对象会转换为字符并丢失其他信息。如果你想保留对象类,你应该检查 format() 函数......你总是可以通过使用 class() 调用来检查对象/变量的类
-
啊……我明白了。谢谢。
-
格式调用的一个选项是:format(Sys.time(), "%Y-%m-%d_%H:%M:%S %Z") ...显示缩写的一种方法是直接在格式调用中通知它,但这可能不适合您的情况: format(Sys.time(), "%Y-%m-%d_%H:%M:%S %Z ", tz = "GMT") ...如果它不能解决您的问题,恐怕您必须阅读有关时区缩写的主题并可能使用 lubridate 包。