我试图创建字符串year,month
几年(从199701到200612)。我可以使用for循环,有没有办法做到这一点,而不使用循环?如何将字符串连接为年份月份而不使用for循环
我的目标:
#1997 01 to 2006 12
199701
199702
199703
199704
199705
199706
199707
199708
199709
199710
199711
199712
199801
.....
我试图创建字符串year,month
几年(从199701到200612)。我可以使用for循环,有没有办法做到这一点,而不使用循环?如何将字符串连接为年份月份而不使用for循环
我的目标:
#1997 01 to 2006 12
199701
199702
199703
199704
199705
199706
199707
199708
199709
199710
199711
199712
199801
.....
我们也可以使用expand.grid
do.call(paste, c(expand.grid(1997:2006, sprintf('%02d',
1:12)), sep=''))
另一种选择:
paste0(rep(1997:2006, each=12), sprintf("%02d", 1:12))
或'sprintf(“%4d%02d” ,代表(1997:2006,每个= 12),1:12) – Uwe
已发布迄今为止所有答案都包含单独致电paste()
和sprintf()
而不是一个致电sprintf()
。
溶液下面是使用CJ()
(交叉连接)从data.table
包功能:
library(data.table)
CJ(1997:2006, 1:12)[, sprintf("%4i%02i", V1, V2)]
[1] "199701" "199702" "199703" "199704" "199705" "199706" "199707" "199708" "199709" "199710" [11] "199711" "199712" "199801" "199802" "199803" "199804" "199805" "199806" "199807" "199808" [21] "199809" "199810" "199811" "199812" "199901" "199902" "199903" "199904" "199905" ...
为什么řü这样的非循环溶液后? – Trix
我认为R的“最佳实践”之一是避免循环 – Rilcon42