简体   繁体   中英

Pasting several values from a vector into a dataframe column

My dataframe "test" is like this:

a b c
d e f

I want to add strings to the 1st col so as to get this

        a__3  b c
        a__23 b c
        a__45 b c 

         ...

    sb <- c(3, 23, 45)
    datalist <- ""



       for (i in 1:length(sb)) {
       new <- apply(test[,1],1,paste0,collapse=("__" sb[i]))
        datalist[i] <- new
    }

I want to add rows into test df including all sb[i] .

I have tried rbind , but does not get the correct result

An idea is to replicate the rows based on the length of your sb vector, do the paste and filter to keep only the ones you are interested in, ie

d3 <- d2[rep(rownames(d2), length(sb)),]
d3$V1[d3$V1 == 'a'] <- paste0(d3$V1[d3$V1 == 'a'], '__', sb)
d3[grepl('a', d3$V1),]

#       V1 V2 V3
#1    a__3  b  c
#1.1 a__23  b  c
#1.2 a__45  b  c

DATA

dput(d2)
structure(list(V1 = c("a", "d"), V2 = c("b", "e"), V3 = c("c", 
"f")), row.names = c(NA, -2L), class = "data.frame")

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM