我有一个字符串向量
vec <- c("apple", "banana", "plum", "cherry", "cake", "ginger")
我有一个相应的逻辑向量
lvec <- c(TRUE, FALSE, TRUE, FALSE, FALSE, TRUE)
我想粘贴 (paste0) 具有 FALSE(或 TRUE)序列的元素。
期望的输出:
c("apple", "banana", "plum", "cherrycake", "ginger")
最佳答案
我首先使用rle
,然后修改“值”以便能够轻松地将数据拆分为所需的组。然后使用 *apply 我们可以使用带有所需参数的粘贴。
x <- c("apple", "banana", "plum", "cherry", "cake", "ginger")
y <- c(TRUE, FALSE, TRUE, FALSE, FALSE, TRUE)
r <- rle(y)
r$values <- seq_along(r$values)
sapply(split(x, inverse.rle(r)), paste, collapse = "")
# alternatively but I didn't initially think of tapply
tapply(x, inverse.rle(r), paste, collapse = "")
这给出了
> sapply(split(x, inverse.rle(r)), paste, collapse = "")
1 2 3 4 5
"apple" "banana" "plum" "cherrycake" "ginger"
关于r - 基于重复逻辑向量元素粘贴字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45547312/