我有一个字符数据矩阵
charMatrix <- structure(c("Bolt", "Nut Plate", "Magnet", "", "Clevis", "welded",
"", "Receptacle"), .Dim = c(4L, 2L))
[,1] [,2]
[1,] "Bolt" "Clevis"
[2,] "Nut Plate" "welded"
[3,] "Magnet" ""
[4,] "" "Receptacle"
我想将行粘贴
在一起并修剪
它们以获得向量。
[1] "Bolt Clevis" "Nut Plate welded" "Magnet" "Receptacle"
我用这种方法解决了这个问题,但我认为一定有更简单的东西,无论是在 Base R 还是 Tidyverse 中。
vec <- charMatrix %>% t() %>%
as_tibble(.name_repair = "universal") %>%
summarise_all(~ str_trim(paste(., collapse = " "))) %>%
unlist() %>%
as.character()
vec
[1] "Bolt Clevis" "Nut Plate welded" "Magnet" "Receptacle"
你能告诉我一个更直接的方法来得到这个答案吗?
最佳答案
我们可以通过将matrix
转换为data.frame
来使用base R
,并将paste
与一起使用>do.call
trimws(do.call(paste, as.data.frame(charMatrix)))
#[1] "Bolt Clevis" "Nut Plate welded" "Magnet" "Receptacle"
do.call
是矢量化的,与循环相比速度更快。
或者使用简单的子集设置和粘贴
trimws(paste(charMatrix[,1], charMatrix[,2]))
两者都是矢量化的。 OP的问题是直接应用该函数。两种解决方案都可以做到这一点。
关于r - 字符矩阵-如何按行运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62054680/