如何使用在R中的apply将字符串粘贴到字符串向量的每个元素上?

ped*_*rio 53 r paste apply

我有一个字符串向量.

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)

  • 当然.但请注意,六年前我写答案时,'paste0()`确实*不存在. (7认同)
  • 缩短形式:`week < - paste0(d,"day")` (3认同)

And*_*rie 11

其他已经表明,由于paste是矢量化的,因此apply在这种情况下不需要使用.

但是,要回答您的问题: apply用于数组或data.frame.如果你想申请一个列表(或载体)的函数,然后使用lapplysapply(的变体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)


Ron*_*hah 7

除了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_cstringr

stringr::str_c(d, "day")
Run Code Online (Sandbox Code Playgroud)

其等价物是

4stri_cstringi

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)