r - 基于重复逻辑向量元素粘贴字符串

标签 r

我有一个字符串向量

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/

相关文章:

r - 如何并行化 bash 中调用 R 脚本的嵌套 for 循环

r - 在给定其他变量的情况下显示一个变量的存在百分比

r - 在 R knitr 中调用后放置函数定义

r - 包名称 = 主函数名称时的文档

R,ubuntu : months function translates months in Spanish

r - dplyr:如何在函数内使用 group_by ?

r - 对一个向量中小于另一个向量的所有值的差求和

R 和 igraph : subgraph nodes based on attributes of other nodes that are incident on edge

r - 如何计算是/否响应并将它们分组?

r - 转换简单的ggplot2代码以使用data.table