Для справки цикла (R) - PullRequest
0 голосов
/ 18 мая 2019

Я хотел бы иметь цикл for для этого:

months = c("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")
years = c(2018, 2019)
input = 17
for (i in 1:input) {
 output[i] = paste(months[i], years[i], sep = " ")????
 NEED HELP HERE. rep() ???

}

И я хотел бы, чтобы вывод был вектором, который состоит из 17 месяцев:

Output = c("January 2018", "February 2018", "March 2018", "April 2018", ... , "May 2019")

Большое спасибо за вашу помощь.

Ответы [ 3 ]

2 голосов
/ 18 мая 2019

Уже существует системный вектор названий месяцев: month.name.Поскольку вставка векторизована и выполняет повторное использование, нет необходимости в цикле for и разделителем по умолчанию для вставки является "", поэтому код может быть просто:

 output <- paste( month.name, rep( years, each=12) )[1:17]
# test result ----
> output
 [1] "January 2018"   "February 2018"  "March 2018"     "April 2018"     "May 2018"       "June 2018"     
 [7] "July 2018"      "August 2018"    "September 2018" "October 2018"   "November 2018"  "December 2018" 
[13] "January 2019"   "February 2019"  "March 2019"     "April 2019"     

Другой способ сделать этобыть с format, примененным к seq.Date результатам:

 output <- format( seq( as.Date('2018-01-01'), as.Date('2019-04-01'), by="month") ,
                  "%B %Y" )   # argument to the format parameter for output
#---------------------

> output
 [1] "January 2018"   "February 2018"  "March 2018"     "April 2018"     "May 2018"       "June 2018"     
 [7] "July 2018"      "August 2018"    "September 2018" "October 2018"   "November 2018"  "December 2018" 
[13] "January 2019"   "February 2019"  "March 2019"     "April 2019"  

См. ?seq.Date и ?format.Date

2 голосов
/ 18 мая 2019

Другой вариант будет таким:

> c(outer(month.name, 2018:2019, paste))[1:17]
 [1] "January 2018"   "February 2018"  "March 2018"    
 [4] "April 2018"     "May 2018"       "June 2018"     
 [7] "July 2018"      "August 2018"    "September 2018"
[10] "October 2018"   "November 2018"  "December 2018" 
[13] "January 2019"   "February 2019"  "March 2019"    
[16] "April 2019"     "May 2019"
1 голос
/ 18 мая 2019
c(paste(months,"2018"),paste(months,"2019"))[1:17]

 ## [1] "January 2018"   "February 2018"  "March 2018"     "April 2018"     "May 2018"       "June 2018"     
 ## [7] "July 2018"      "August 2018"    "September 2018" "October 2018"   "November 2018"  "December 2018" 
## [13] "January 2019"   "February 2019"  "March 2019"     "April 2019"     "May 2019" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...