В R: объединение векторных элементов по строкам, преобразование векторных строк в строки - PullRequest
12 голосов
/ 18 ноября 2010

Есть ли в R операция "by row" для преобразования каждой строки в векторе, подобном этому, в строки?

> d= cbind("Data", c("2", "73"))
> d
     [,1]   [,2]
[1,] "Data" "2" 
[2,] "Data" "73"

Я хочу получить строки типа

     [,1]
[1,] "Data 2"
[2,] "Data 73"

Есть ли простой способ объединить элементы в ряд?

Ответы [ 3 ]

20 голосов
/ 18 ноября 2010

Да, есть. Это называется «применить»; -)

apply(d,1,paste,collapse=" ")
[1] "Data 2"  "Data 73"
# convert to matrix using as.matrix to get exactly your solution

См. ?apply и ?paste

3 голосов
/ 16 марта 2016

Общий способ сделать это, не прибегая к ?apply:

do.call(paste, as.data.frame(d))
[1] "Data 2"  "Data 73"

Где as.data.frame используется, чтобы избежать подписок.

Edit:

do.call - это функция, которая принимает другую функцию в качестве первого аргумента и список в качестве второго аргумента. Он часто используется для отправки списков аргументов функциям (в нашем случае столбцы от d до paste()). Мы отправляем d как data.frame (тип списка), чтобы этот трюк работал.

3 голосов
/ 18 ноября 2010

После быстрого взгляда на ?paste становится ясно, что apply не требуется для данного примера.Было бы удобно, если бы там было несколько столбцов.

> paste(d[,1],d[,2])
[1] "Data 2"  "Data 73"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...