我有一个矩阵(或数据帧(:
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
,然后使用do.call
转换为paste
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
,按列将矩阵拆分为vector
s的list
,然后使用do.call
do.call(paste, c(asplit(m1, 2), sep=''))