我有一个字符串向量.
d <- c("Mon","Tues","Wednes","Thurs","Fri","Satur","Sun")
Run Code Online (Sandbox Code Playgroud)
我希望以类似于此的方式将字符串"day"粘贴到矢量的每个元素上.
week <- apply(d, "day", paste, sep='')
Run Code Online (Sandbox Code Playgroud)
Dir*_*tel 87
不需要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>
Run Code Online (Sandbox Code Playgroud)
And*_*rie 11
其他已经表明,由于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"
Run Code Online (Sandbox Code Playgroud)
除了paste/之外paste0,我们还可以通过多种方式向向量中的每个元素添加字符串。
1)使用sprintf
sprintf("%sday", d)
#[1] "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" "Sunday"
Run Code Online (Sandbox Code Playgroud)
2)glue
glue::glue("{d}days")
Run Code Online (Sandbox Code Playgroud)
这里{d}被评估为 R 代码。as.character如果需要的话可以将其包裹起来。
3)str_c在stringr
stringr::str_c(d, "day")
Run Code Online (Sandbox Code Playgroud)
其等价物是
4stri_c进stringi
stringi::stri_c(d, "day")
Run Code Online (Sandbox Code Playgroud)
5)stringi还有stri_paste
stringi::stri_paste(d, "day")
Run Code Online (Sandbox Code Playgroud)