Объединение N столбцов текста в R - PullRequest
9 голосов
/ 29 декабря 2011

У меня есть произвольное количество столбцов, содержащих текстовые данные, которые были собраны с помощью команды cbind (), например:

[1,] "Text 1,1" "Text 1,2" "Text 1,n"
[2,] "Text 2,1" "Text 2,2" "Text 2,n"
[3,] "Text 3,1" "Text 3,2" "Text 3,n"
[n,] "Text n,1" "Text n,2" "Text n,n"

Я хочу объединить каждую строку вместе, поэтому у меня осталось:

[1,] "Text 1,1 Text 1,2 Text 1,n"
[n,] "Text n,1 Text n,2 Text n,n"

В настоящее время я делаю это с помощью цикла for (где textColumns - это матрица cbind ()):

concatColumn <- c()
for (i in 1:ncol(textColumns)) concatColumn <- paste(concatColumn,textColumns[,i])

Есть ли более простой и элегантный способ сделать это в R? Я искал способы сделать это с помощью команды paste () без цикла for, но не смог найти решение. Заранее благодарю за помощь!

Ответы [ 2 ]

24 голосов
/ 29 декабря 2011

Это просто с data.frame,

m = matrix(letters[1:12], 3, byrow=TRUE)
do.call(paste, as.data.frame(m, stringsAsFactors=FALSE))
#[1] "a b c d" "e f g h" "i j k l"
8 голосов
/ 29 декабря 2011

Просто используйте paste с аргументом collapse:

R> row <- c("Text 1,1",  "Text 1,2", "Text 1,n")
R> paste(row, collapse=" ")
[1] "Text 1,1 Text 1,2 Text 1,n"
R> 

paste векторизовано, поэтому вы можете передать ему несколько аргументов одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...