r - 如何根据特定字符包装字符向量?

标签 r string split

假设我有

 raw = 
 [1] "r"                 "csv"               "python"           
 [4] "r"                 "r"                 "c++"              
 [7] "r"                 "matrix"            "eigen"            
[10] "r"                 "data.frame"        "r"                
[13] "subset"            "r"                 "for-loop"         
[16] "r"                 "debugging"         "matrix"           
[19] "r"                 "histogram"         "distribution"     
[22] "lattice"           "r"                 "dplyr"            
[25] "r"                 "gecode"            "r"         

我想根据字符 r 包装这个字符串列表,即

[1] "r; csv; python"
[2] "r"
[3] "r; c++"
[4] "r; matrix; eigen"

我使用 strsplit() 来按 r 分割,但效果不太好...任何建议

最佳答案

您可以拆分然后粘贴。 split 于 cumsum(raw == "r")将为我们提供分割索引,其中每个分割以 r 开头。然后我们可以迭代列表,将值粘贴在一起。由于我们知道每次迭代的结果将是单个字符元素,因此我们可以使用 vapply() .

vapply(unname(split(raw, cumsum(raw == "r"))), paste, "", collapse = "; ")
# [1] "r; csv; python"                     
# [2] "r"                                  
# [3] "r; c++"                             
# [4] "r; matrix; eigen"                   
# [5] "r; data.frame"                      
# [6] "r; subset"                          
# [7] "r; for-loop"                        
# [8] "r; debugging; matrix"               
# [9] "r; histogram; distribution; lattice"
#[10] "r; dplyr"                           
#[11] "r; gecode"                          
#[12] "r"      

数据:

raw <- c("r", "csv", "python", "r", "r", "c++", "r", "matrix", "eigen", 
"r", "data.frame", "r", "subset", "r", "for-loop", "r", "debugging", 
"matrix", "r", "histogram", "distribution", "lattice", "r", "dplyr", 
"r", "gecode", "r")

关于r - 如何根据特定字符包装字符向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34077252/

相关文章:

python - 在 python 函数中使用字符串时接受 "close matches"吗?

javascript - Codewars 挑战 - Hamelin 的聋鼠 - JavaScript - 如何通过特定字符集拆分字符串?

JavaScript - 将数组分成具有随机数量对象的组

r - R中的加权数字总和

r - 在 R 中合并两个不同大小的 dgCMatrix 稀疏矩阵

r - 旋转更长的语法

r - 我正在尝试在 r 中进行 chi2 测试,但它没有向我显示观察到的值,我不确定为什么

c - scanf ("%[^\n]") 和 scanf ("%s") 之间的区别?

java - 使用 split 或 tokenizer 将字符串放入大括号内的方法

c++ - boost split 不能拆分中文句子