R:如何在lappy()中应用grep()

R:如何在lappy()中应用grep(),r,lapply,sapply,tapply,R,Lapply,Sapply,Tapply,我想在R中应用grep(),但我在lappy()方面不是很好。我知道Lappy能够获取一个列表,将函数应用于每个成员并输出一个列表。例如,让x成为一个由2个成员组成的列表 > x<-strsplit(docs$Text," ") > > x [[1]] [1] "I" "lovehttp" "my" "mum." "I" "love" [7] "my" "dad." "I"

我想在R中应用grep(),但我在lappy()方面不是很好。我知道Lappy能够获取一个列表,将函数应用于每个成员并输出一个列表。例如,让
x
成为一个由2个成员组成的列表

> x<-strsplit(docs$Text," ")
> 
> x
[[1]]
 [1] "I"         "lovehttp"  "my"        "mum."      "I"         "love"     
 [7] "my"        "dad."      "I"         "love"      "my"        "brothers."

[[2]]
 [1] "I"         "live"      "in"        "Eastcoast" "now."      "Job.I"    
 [7] "used"      "to"        "live"      "in"        "WestCoast."  
但它不起作用,它说

Error in grep(pattern = "http", invert = TRUE, value = TRUE) : 
argument "x" is missing, with no default
所以,我试过了

> lapply(x,grep(pattern="http",invert=TRUE, value=TRUE,x))
但是它说

Error in match.fun(FUN) : 
'grep(pattern = "http", invert = TRUE, value = TRUE, x)' is not a 
function, character or symbol

A请帮忙,谢谢

以下代码行将删除列表中包含子字符串http的向量中的所有条目:

repx <- function(x) {
    y <- grep("http", x)
    vec <- rep(TRUE, length(x))
    vec[y] <- FALSE
    x <- x[vec]
    return(x)
}

lapply(lst, function(x) { repx(x) })

repx这可以在一行中完成:

lst <- lapply(lst, grep, pattern="http", value=TRUE, invert=TRUE)

#lst
#[[1]]
# [1] "I"         "my"        "mum."      "I"         "love"      "my"        "dad."      "I"         "love"      "my"        "brothers."
#
#[[2]]
# [1] "I"          "live"       "in"         "Eastcoast"  "now."       "Job.I"      "used"       "to"         "live"       "in"         "WestCoast."

您需要传递grep要处理的数据集。@TimBiegeleisen最初,我想删除由http组成的整个单词。因此,由于“lovehttp”由“http”组成,所以它将被删除。如果我只想删除“http”并保留“love”,那有可能吗?你需要找出你想要的答案。您现在正在更改需求。
x1 <- c("I", "lovehttp", "my", "mum.", "I", "love", "my", "dad.", "I", "love", "my", "brothers.")
x2 <- c("I", "live", "in", "Eastcoast", "now.", "Job.I", "used", "to", "live", "in", "WestCoast.")
lst <- list(x1, x2)
lst <- lapply(lst, grep, pattern="http", value=TRUE, invert=TRUE)

#lst
#[[1]]
# [1] "I"         "my"        "mum."      "I"         "love"      "my"        "dad."      "I"         "love"      "my"        "brothers."
#
#[[2]]
# [1] "I"          "live"       "in"         "Eastcoast"  "now."       "Job.I"      "used"       "to"         "live"       "in"         "WestCoast."
lapply(lst, gsub, pattern="http", replacement="")
#[[1]]
# [1] "I"         "love"      "my"        "mum."      "I"         "love"      "my"        "dad."      "I"         "love"      "my"        "brothers."
#
#[[2]]
# [1] "I"          "live"       "in"         "Eastcoast"  "now."       "Job.I"      "used"       "to"         "live"       "in"         "WestCoast."