Изменить таблицу на символьный вектор без пробелов - PullRequest
0 голосов
/ 19 февраля 2019

Давайте иметь следующий datafrane:

df <- data.frame(c("a", "c ","e "), c("b ", "d", "f "))
colnames(df) <- c("X1", "X2")
df
  X1 X2
1  a b 
2 c   d
3 e  f

Как преобразовать данный data.frame в один символьный вектор без пробелов?

#Expected result:
#vector
#[1]"abcdef"

Ответы [ 5 ]

0 голосов
/ 19 февраля 2019

Как отмечается в комментариях, t уже преобразует df в матрицу, поэтому работает следующее:

paste(trimws(t(df)), collapse = "")
# [1] "abcdef"
0 голосов
/ 19 февраля 2019

Идея использования gsub для удаления ненужных пробелов,

gsub(' ', '', paste(unlist(t(df)), collapse =  ''))
#[1] "abcdef"
0 голосов
/ 19 февраля 2019

Другое решение из базы R.

paste(trimws(as.vector(t(df))), collapse = "")
# [1] "abcdef"
0 голосов
/ 19 февраля 2019

Транспонировать df, распутать его в вектор, обрезать пробелы и вставить компоненты вместе:

paste(trimws(c(t(df))), collapse = "")
## [1] "abcdef"
0 голосов
/ 19 февраля 2019

Один из вариантов - paste после удаления начальных / запаздывающих пробелов с помощью trimws

paste(do.call(paste0, lapply(df, trimws)), collapse="")
#[1] "abcdef"

или с использованием tidyverse

library(tidyverse)
df %>% 
  mutate_all(str_squish) %>% 
  pmap_chr(paste, sep="") %>%
  paste(., collapse="")
#[1] "abcdef"
...