For example, I want to create a string vector like this
c('1987.6', '1987.7', '1987.8', '1987.9', '1987.10', '1987.11', '1987.12',
'1988.1', '1988.2', ..., '2020.12')
Absolutely, it couldn't be written one by one.
Thanks for any help!
CodePudding user response:
Using lapply
and unlist
you could do:
unlist(lapply(1987:1988, paste, 1:12, sep = "."))
#> [1] "1987.1" "1987.2" "1987.3" "1987.4" "1987.5" "1987.6" "1987.7"
#> [8] "1987.8" "1987.9" "1987.10" "1987.11" "1987.12" "1988.1" "1988.2"
#> [15] "1988.3" "1988.4" "1988.5" "1988.6" "1988.7" "1988.8" "1988.9"
#> [22] "1988.10" "1988.11" "1988.12"
To add a leading zero you could e.g. use stringr::str_pad
:
unlist(lapply(1987:1988, paste, stringr::str_pad(1:12, width = 2, pad = 0), sep = "."))
#> [1] "1987.01" "1987.02" "1987.03" "1987.04" "1987.05" "1987.06" "1987.07"
#> [8] "1987.08" "1987.09" "1987.10" "1987.11" "1987.12" "1988.01" "1988.02"
#> [15] "1988.03" "1988.04" "1988.05" "1988.06" "1988.07" "1988.08" "1988.09"
#> [22] "1988.10" "1988.11" "1988.12"
CodePudding user response:
One option could be
apply(expand.grid(1:12, 1987:2020), 1, \(x) paste(rev(x), collapse = "."))[-(1:5)]
#> [1] "1987.6" "1987.7" "1987.8" "1987.9" "1987.10" "1987.11" "1987.12"
#> [8] "1988.1" "1988.2" "1988.3" "1988.4" "1988.5" "1988.6" "1988.7"
#> [15] "1988.8" "1988.9" "1988.10" "1988.11" "1988.12" "1989.1" "1989.2"
#> [22] "1989.3" "1989.4" "1989.5" "1989.6" "1989.7" "1989.8" "1989.9"
#> [29] "1989.10" "1989.11" "1989.12" "1990.1" "1990.2" "1990.3" "1990.4"
#> [36] "1990.5" "1990.6" "1990.7" "1990.8" "1990.9" "1990.10" "1990.11"
#> [43] "1990.12" "1991.1" "1991.2" "1991.3" "1991.4" "1991.5" "1991.6"
#> [50] "1991.7" "1991.8" "1991.9" "1991.10" "1991.11" "1991.12" "1992.1"
#> [57] "1992.2" "1992.3" "1992.4" "1992.5" "1992.6" "1992.7" "1992.8"
#> [64] "1992.9" "1992.10" "1992.11" "1992.12" "1993.1" "1993.2" "1993.3"
#> [71] "1993.4" "1993.5" "1993.6" "1993.7" "1993.8" "1993.9" "1993.10"
#> [78] "1993.11" "1993.12" "1994.1" "1994.2" "1994.3" "1994.4" "1994.5"
#> [85] "1994.6" "1994.7" "1994.8" "1994.9" "1994.10" "1994.11" "1994.12"
#> [92] "1995.1" "1995.2" "1995.3" "1995.4" "1995.5" "1995.6" "1995.7"
#> [99] "1995.8" "1995.9" "1995.10" "1995.11" "1995.12" "1996.1" "1996.2"
#> [106] "1996.3" "1996.4" "1996.5" "1996.6" "1996.7" "1996.8" "1996.9"
#> [113] "1996.10" "1996.11" "1996.12" "1997.1" "1997.2" "1997.3" "1997.4"
#> [120] "1997.5" "1997.6" "1997.7" "1997.8" "1997.9" "1997.10" "1997.11"
#> [127] "1997.12" "1998.1" "1998.2" "1998.3" "1998.4" "1998.5" "1998.6"
#> [134] "1998.7" "1998.8" "1998.9" "1998.10" "1998.11" "1998.12" "1999.1"
#> [141] "1999.2" "1999.3" "1999.4" "1999.5" "1999.6" "1999.7" "1999.8"
#> [148] "1999.9" "1999.10" "1999.11" "1999.12" "2000.1" "2000.2" "2000.3"
#> [155] "2000.4" "2000.5" "2000.6" "2000.7" "2000.8" "2000.9" "2000.10"
#> [162] "2000.11" "2000.12" "2001.1" "2001.2" "2001.3" "2001.4" "2001.5"
#> [169] "2001.6" "2001.7" "2001.8" "2001.9" "2001.10" "2001.11" "2001.12"
#> [176] "2002.1" "2002.2" "2002.3" "2002.4" "2002.5" "2002.6" "2002.7"
#> [183] "2002.8" "2002.9" "2002.10" "2002.11" "2002.12" "2003.1" "2003.2"
#> [190] "2003.3" "2003.4" "2003.5" "2003.6" "2003.7" "2003.8" "2003.9"
#> [197] "2003.10" "2003.11" "2003.12" "2004.1" "2004.2" "2004.3" "2004.4"
#> [204] "2004.5" "2004.6" "2004.7" "2004.8" "2004.9" "2004.10" "2004.11"
#> [211] "2004.12" "2005.1" "2005.2" "2005.3" "2005.4" "2005.5" "2005.6"
#> [218] "2005.7" "2005.8" "2005.9" "2005.10" "2005.11" "2005.12" "2006.1"
#> [225] "2006.2" "2006.3" "2006.4" "2006.5" "2006.6" "2006.7" "2006.8"
#> [232] "2006.9" "2006.10" "2006.11" "2006.12" "2007.1" "2007.2" "2007.3"
#> [239] "2007.4" "2007.5" "2007.6" "2007.7" "2007.8" "2007.9" "2007.10"
#> [246] "2007.11" "2007.12" "2008.1" "2008.2" "2008.3" "2008.4" "2008.5"
#> [253] "2008.6" "2008.7" "2008.8" "2008.9" "2008.10" "2008.11" "2008.12"
#> [260] "2009.1" "2009.2" "2009.3" "2009.4" "2009.5" "2009.6" "2009.7"
#> [267] "2009.8" "2009.9" "2009.10" "2009.11" "2009.12" "2010.1" "2010.2"
#> [274] "2010.3" "2010.4" "2010.5" "2010.6" "2010.7" "2010.8" "2010.9"
#> [281] "2010.10" "2010.11" "2010.12" "2011.1" "2011.2" "2011.3" "2011.4"
#> [288] "2011.5" "2011.6" "2011.7" "2011.8" "2011.9" "2011.10" "2011.11"
#> [295] "2011.12" "2012.1" "2012.2" "2012.3" "2012.4" "2012.5" "2012.6"
#> [302] "2012.7" "2012.8" "2012.9" "2012.10" "2012.11" "2012.12" "2013.1"
#> [309] "2013.2" "2013.3" "2013.4" "2013.5" "2013.6" "2013.7" "2013.8"
#> [316] "2013.9" "2013.10" "2013.11" "2013.12" "2014.1" "2014.2" "2014.3"
#> [323] "2014.4" "2014.5" "2014.6" "2014.7" "2014.8" "2014.9" "2014.10"
#> [330] "2014.11" "2014.12" "2015.1" "2015.2" "2015.3" "2015.4" "2015.5"
#> [337] "2015.6" "2015.7" "2015.8" "2015.9" "2015.10" "2015.11" "2015.12"
#> [344] "2016.1" "2016.2" "2016.3" "2016.4" "2016.5" "2016.6" "2016.7"
#> [351] "2016.8" "2016.9" "2016.10" "2016.11" "2016.12" "2017.1" "2017.2"
#> [358] "2017.3" "2017.4" "2017.5" "2017.6" "2017.7" "2017.8" "2017.9"
#> [365] "2017.10" "2017.11" "2017.12" "2018.1" "2018.2" "2018.3" "2018.4"
#> [372] "2018.5" "2018.6" "2018.7" "2018.8" "2018.9" "2018.10" "2018.11"
#> [379] "2018.12" "2019.1" "2019.2" "2019.3" "2019.4" "2019.5" "2019.6"
#> [386] "2019.7" "2019.8" "2019.9" "2019.10" "2019.11" "2019.12" "2020.1"
#> [393] "2020.2" "2020.3" "2020.4" "2020.5" "2020.6" "2020.7" "2020.8"
#> [400] "2020.9" "2020.10" "2020.11" "2020.12"
Created on 2022-12-17 with reprex v2.0.2
CodePudding user response:
An alternative option using rep
and paste
without the need for looping (apply
, lapply
):
paste(rep(1987:2020, each = 12), rep(1:12, times = length(1987:2020)), sep = ".")
Output
# [1] "1987.1" "1987.2" "1987.3" "1987.4" "1987.5" "1987.6" "1987.7" "1987.8" "1987.9" "1987.10" "1987.11" "1987.12"
# [13] "1988.1" "1988.2" "1988.3" "1988.4" "1988.5" "1988.6" "1988.7" "1988.8" "1988.9" "1988.10" "1988.11" "1988.12"
# [25] "1989.1"
# ... "2020.8" "2020.9" "2020.10" "2020.11" "2020.12"