r - 字符矩阵-如何按行运算?

标签 r matrix text-mining

我有一个字符数据矩阵

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/

相关文章:

algorithm - 找到矩阵乘积中的单个错误元素?

C:将字符串数组分成单个单词

r - 使用 R 进行阿拉伯文本挖掘

python - 快速从句子中提取术语

r - R 中的命名元素操作

r - 使用 R 的带有 httr 包的 POST 请求

python - 在python中使用特征库函数调用C++

python - 关键字匹配在 pandas 列中给出重复的单词?

R 数据表 fread : specify column data type

R For循环删除从一个字符串到列中第二个字符串的行范围