【发布时间】:2017-10-17 00:26:31
【问题描述】:
我正在尝试扩展一个自定义 Posixct 字段中显示的因子数量,其中正常方式 (str(DF, list.len=ncol(DF), vec.len=20)) 不起作用。
我在这里请求 20,但无论列表的长度如何,它始终显示两个 ("2017-01-01 08:40:00" "2017-01-01 08:50:00" ...)
(这里3)。
资料data.csv
"AAA", "BBB"
1, 01012017-0940+0100
2, 01012017-0950+0100
3, 01012017-0838+0100
代码
library('methods') # setClass
# https://unix.stackexchange.com/a/363290/16920
setClass('iso8601')
# https://stackoverflow.com/questions/5788117/only-read-limited-number-of-columns
setAs("character","iso8601",function(from) strptime(from,format="%d%m%Y-%H%M%z"))
DF <- read.csv(file='data.csv',
sep=',',
header=TRUE,
colClasses=c('numeric','iso8601'),
strip.white=TRUE)
DF
str(DF, list.len=ncol(DF), vec.len=20)
R 3.3.3 中的输出
AAA BBB
1 1 2017-01-01 08:40:00
2 2 2017-01-01 08:50:00
3 3 2017-01-01 07:38:00
'data.frame': 3 obs. of 2 variables:
$ AAA : num 1 2 3
$ BBB : POSIXlt, format: "2017-01-01 08:40:00" "2017-01-01 08:50:00" ...
R 3.4.0 中的输出
同上,重现同样的问题。
AAA BBB
1 1 2017-01-01 08:40:00
2 2 2017-01-01 08:50:00
3 3 2017-01-01 07:38:00
'data.frame': 3 obs. of 2 variables:
$ AAA: num 1 2 3
$ BBB: POSIXlt, format: "2017-01-01 08:40:00" "2017-01-01 08:50:00" ...
如何将
str(DF, list.len=ncol(DF), vec.len=20)扩展到每个变量的多个因子?如何在
str(DF)中显示每个变量的项目数量?等不扩展参数本身在变量中。
消除病因中的终端宽度和列因素
我做到了
- 增加了默认值:宽度从 80 增加到 150,列从 24 增加到 38
- 重启终端提示
- 运行
Rscript myScript.r - 再次输出相同的结果,因此终端宽度和列数在这里似乎没有影响
罗兰的提议
该代码并非在所有场合都有效,但在有限的情况下,因此应该可以动态应用它
# Roland's comment
str(DF, list.len=ncol(DF), vec.len=20, width = 100)
R:3.3.3、3.4.0(2017-04-21,向后移植)
操作系统:Debian 8.7
窗口管理器:Gnome 3.14.1
【问题讨论】:
-
您在问题标题中写入 POSIXct,然后创建一个 POSIXlt 变量。如果你创建了一个 POSIXct 变量,你可能不会遇到这个问题。
-
1.我无法用 R 3.4.0 重现。我看到了预期的结果。 2. 使用
as.POSIXct而不是strptime。很少有理由将时间戳存储为 POSIXlt。 -
在cran.r-project.org阅读debian的官方说明。
-
我在我的 Mac 上再次尝试以确保它不是赢与 *nix 的事情。 如果控制台的宽度足够,它会按预期工作。试试
str(DF, list.len=ncol(DF), vec.len=20, width = 100)。 -
将
str中的width =参数设置为足够大的数字对我有用。 @Roland 已经提出了这个建议,但我没有看到你的回复评论。你能确认这对你不起作用吗?