输入:
a <- c('a,a b,a b c,a b c d')
像字符的第一个单词,即只是一个grep(搜索功能)到另一个数据框,即
df <- data.frame(rbind(c('a',1,'ewew'),c('a b c',101,'dffdhsd')))
并在数据框中输出:
a,a b c
答案 0 :(得分:0)
我不清楚这是否是您的目标,但是您可以尝试:
> ind <- apply(df, 1:2, function(x) x %in% strsplit(a, ",")[[1]])
> df[ind]
[1] "a" "a b c"
答案 1 :(得分:0)
我们将'a'除以',分成vector
,并检查其中的any
列是否具有那些元素以创建用于子集列的逻辑向量
v1 <- unlist(strsplit(a, ","))
df[, sapply(df, function(x) any(x %in% v1))]
#[1] a a b c
#Levels: a a b c
如果我们需要使用grep
,请在'a'中将,
替换为|
,并将其用作pattern
pat <- gsub(",", "|", a)
或
pat <- chartr(",", "|", a)
df[, colSums(sapply(df, grepl, pattern = pat)) > 1]