назначать имена динамических переменных с помощью цикла и изменять из dplyr

Я хотел бы разбить символьное поле на отдельные переменные, по одной для каждого символа в строке.

library(dplyr)
temp1 <- data.frame(a = c('dedefdewfe' , 'rewewqreqw'))


for(i in 1:10){

  temp1 <- temp1 %>% 
    mutate(paste('v' , i , ,sep = '') = substr(a , i , i))
}

Результирующий фрейм данных будет иметь 11 переменных, исходные a, с v1 по v10


person Illya    schedule 25.07.2017    source источник


Ответы (1)


tidyr::separate подходит для этого. Вы не можете разделить пустую строку, но вы можете указать позиции разделения ...

library(tidyr)
library(dplyr)
temp1 %>% 
  mutate(b=a) %>%   ## make a copy
  separate(b,into=paste0("v",1:10),sep=1:9)

(возможно, лучше использовать nc <- nchar(temp1$a[1]), а затем nc, nc-1 вместо 10, 9 соответственно)

person Ben Bolker    schedule 25.07.2017
comment
вы можете подумать о редактировании своего заголовка, чтобы сделать что-то вроде разделения символьного столбца фрейма данных на несколько столбцов - то есть сделать это о том, что вы пытаетесь выполнить, а не о конкретном подходе - person Ben Bolker; 25.07.2017