R: 关于使用 lapply() 函数而不是 for 循环的问题

R: Question about using lapply() function instead of for loop

我已成功运行以下for循环函数:

for (i in 1:10){
   X=get(paste0("Y_lines",i))
   X <- tm_map(X, content_transformer(tolower))
   assign(paste0("Y_lines",i), X)
rm(X)}

我想改用 lapply() 函数,因为它更省时。我玩过这个功能,但没有找到任何成功。这是我最近的努力:

lapply(X = Y_lines[1:10], FUN = tm_map(X, content_transformer(tolower)))

这是我第一次使用 lapply,如果我犯了基本错误,请见谅。

提前致谢。

尝试一下,注意这是未经测试的,您可能需要在 list2env()lapply() 函数之间插入一个 setNames() 函数:(根据附加问题进行编辑) : 我们可以存储匿名函数第一部分的结果,然后像这样在其上应用另一个函数:

list2env(lapply(mget(ls(.GlobalEnv, pattern = "Y_lines"), envir = .GlobalEnv), function(x){
    y <- tm_map(x, content_transformer(tolower))
    tm_map(y, removeWords, stopwords("english"))
  }
), .GlobalEnv)

或者我们可以重载函数:

list2env(lapply(mget(ls(.GlobalEnv, pattern = "Y_lines"), envir = .GlobalEnv), function(x){
    tm_map(tm_map(x, content_transformer(tolower)), removeWords, stopwords("english"))
  }
), .GlobalEnv)