Вставка нескольких значений из вектора в столбец данных - PullRequest
0 голосов
/ 01 ноября 2019

Мой тестовый фрейм данных выглядит так:

a b c
d e f

Я хочу добавить строки в первый столбец, чтобы получить это

        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
    }

Я хочу добавить строки вtest df включая все sb[i].

Я пытался rbind, но не получил правильный результат

1 Ответ

0 голосов
/ 01 ноября 2019

Идея состоит в том, чтобы реплицировать строки на основе длины вашего sb вектора, выполните paste и отфильтруйте, чтобы сохранить только те из них, которые вам интересны, то есть

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

ДАННЫЕ

dput(d2)
structure(list(V1 = c("a", "d"), V2 = c("b", "e"), V3 = c("c", 
"f")), row.names = c(NA, -2L), class = "data.frame")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...