连接R中不同行的字符串

连接R中不同行的字符串,r,grepl,R,Grepl,我有一个R数据框,看起来像 data.1 data.character a **str1**,str2,str2,str3,str4,str5,str6 b str3,str4,str5 c **str1**,str6 我目前正在使用grepl来确定列data.character是否有我的搜索字符串”,如果有,我希望将data.1中的所有行值连接成一个带分隔符的字符串 例如,如果我使用grepl(str1,data.

我有一个R数据框,看起来像

data.1       data.character
a            **str1**,str2,str2,str3,str4,str5,str6
b            str3,str4,str5
c            **str1**,str6
我目前正在使用
grepl
来确定列data.character是否有我的搜索字符串
,如果有,我希望将
data.1
中的所有行值连接成一个带分隔符的字符串

例如,如果我使用
grepl(str1,data.character)
它将返回两行
df$data.1
,我想要一个如下输出

a,c
(在data.character中包含str1的行)

我目前正在使用两个for循环,但我知道这不是一个有效的方法。我想知道是否有人能建议一种更优雅、更省时的方法

你就快到了-(现在是我冗长的回答)

然后,在grep(或grepl)生成的这些位置上,对所需的向量进行子集

更简洁地说

paste(df$data.1[grep("str1" , df$data.character)],collapse=",")


如果您的data.frame是df,那么
paste0(df$data.1[grep(“str1”,df$data.character)],collapse=“,”
应该可以工作。谢谢!当你回答一个问题时,你应该发布一个答案,如果它有效,OP应该接受它作为正确的答案。这样,当人们寻找类似的东西时,他们会看到问题的正确答案。@user20650只是打电话给你,以防iraserd的评论没有:-)。当然可以,把你的评论作为回答发出去。@CarlWitthoft,Iraser-会的,干杯-很懒散,这很有帮助。谢谢
# In your question you used grepl which produces a logical vector (TRUE if
#string is present)

grepl("str1" , df$data.character)
#[1]  TRUE FALSE  TRUE

# In my comment I used grep which produces an positional index of the vector if
# string is present (this was due to me not reading your grepl properly rather 
# than because of any property)

grep("str1" , df$data.character)
# [1] 1 3
(s <- df$data.1[grepl("str1" , df$data.character)])
# [1] "a" "c"  first and third elements are selected
paste(s,collapse=",")
# [1] "a,c"
paste(df$data.1[grep("str1" , df$data.character)],collapse=",")