Как вставить строку для каждого элемента вектора строк, применяя в R?
У меня есть вектор строк.
d <- c("Mon","Tues","Wednes","Thurs","Fri","Satur","Sun")
для которого я хочу вставить строку "день" на каждый элемент вектора способом, подобным этому.
week <- apply(d, "day", paste, sep='')
Ответы
Ответ 1
Нет необходимости в apply()
, просто используйте paste()
:
R> d <- c("Mon","Tues","Wednes","Thurs","Fri","Satur","Sun")
R> week <- paste(d, "day", sep="")
R> week
[1] "Monday" "Tuesday" "Wednesday" "Thursday"
[4] "Friday" "Saturday" "Sunday"
R>
Ответ 2
Другое уже указывало, что, поскольку paste
векторизован, нет необходимости использовать apply
в этом случае.
Однако, чтобы ответить на ваш вопрос: apply
используется для массива или data.frame. Если вы хотите применить функцию по списку (или вектору), используйте lapply
или sapply
(вариант lapply
, который упрощает результаты):
sapply(d, paste, "day", sep="")
Mon Tues Wednes Thurs Fri Satur
"Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"
Sun
"Sunday"
Ответ 3
Помимо paste
/paste0
есть множество способов, которыми мы можем добавить строку к каждому элементу в векторе.
1) Использование sprintf
sprintf("%sday", d)
#[1] "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" "Sunday"
2) glue
glue::glue("{d}days")
Здесь {d}
оценивается как R-код. При необходимости это можно обернуть в as.character
.
3) str_c
в stringr
stringr::str_c(d, "day")
чей эквивалент
4) stri_c
в stringi
stringi::stri_c(d, "day")
5) stringi
также имеет stri_paste
stringi::stri_paste(d, "day")