我有一个矩阵(或数据框)。
m1 <- matrix(letters[1:8], ncol = 2, byrow=TRUE)
[,1] [,2]
[1,] "a" "b"
[2,] "c" "d"
[3,] "e" "f"
[4,] "g" "h"
希望的输出:
vec1 = c("ab", "cd", "ef", "gh")
我希望这能适用于任何行或列大小的矩阵。感谢使用Base R和dplyr。
我们可以将其转换为 data.frame
然后 paste
与 do.call
do.call(paste, c(as.data.frame(m1), sep=''))
#[1] "ab" "cd" "ef" "gh"
或者一个效率较低的选择是 apply
apply(m1, 1, paste, collapse = '')
随着 tidyverse
,我们可以使用 reduce
与 str_c
library(dplyr)
library(purrr)
library(stringr)
as_tibble(m1) %>%
reduce(str_c, sep="")
#[1] "ab" "cd" "ef" "gh"
或者如果只有两列,按索引提取列,然后使用 paste0
paste0(m1[,1], m1[,2])
或与 asplit
,将矩阵按列分割成一个 list
的 vector
的,然后使用 do.call
do.call(paste, c(asplit(m1, 2), sep=''))