lapply里面有多行语法

时间:2015-10-07 23:04:12

标签: r lapply

如何在lapply中指定多行语法。我的语法也没有替换第一行中的text_query。提前谢谢。

text_query<-lapply(text_query, function(x) {   gsub("ABC", "ABD", x, fixed=TRUE)   gsub("JKL", "JKM", x, fixed=TRUE) } )

2 个答案:

答案 0 :(得分:4)

R 不关心一个操作中的新行,所以你可以写:

text_query <- lapply(text_query, function(x) {
    gsub("ABC", "ABD", x, fixed=TRUE)
    gsub("JKL", "JKM", x, fixed=TRUE)
})

或者,如果你想要它在一行中,你可以用分号分隔语句,即

text_query<-lapply(text_query, function(x) {   gsub("ABC", "ABD", x, fixed=TRUE); gsub("JKL", "JKM", x, fixed=TRUE) } )

我认为第一种选择是更加难以理解的,尽管^^

答案 1 :(得分:2)

Jean,lapply接受您的第二个参数为lambda或匿名/未命名的函数。

两个示例都使用text_query <- "ABC JKL"作为示例数据,并返回list('ABD JKM')作为结果。

第一版:

text_query <- lapply(text_query, function(x) {
  x <- gsub("ABC", "ABD", x, fixed=TRUE)
  gsub("JKL", "JKM", x, fixed=TRUE)
})

text_query

第二版,用命名函数lambda替换mySub

mySub <- function(string) {
  string <- gsub("ABC", "ABD", x, fixed=TRUE)
  gsub("JKL", "JKM", string, fixed=TRUE)
}

text_query <- lapply(text_query, mySub)

text_query

注意,两者都假设您希望将两个gsub调用应用于您提供的参数。