假设我有
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/