R中gsub的代码向量化

数据挖掘 r 数据清理
2022-03-11 00:38:47

如何在 R 中对这段代码进行矢量化?

data <- data.frame(A = rep(5, 5), B = rep(0, 5))
data$abstract <- c("no abstract available", "A", "A", "B", "no abstract available")

for (row in (1:nrow(data))){
  data [row,"abstract"] <- gsub("no abstract available"," ",data[row,"abstract"])
}
1个回答

对于这个问题,你有很多选择

  • 使用 sapply

    data$abstract <- sapply(data$abstract, 
                            function(x){gsub(pattern = "no abstract available",
                            replacement = " ", x)})
    
  • 使用映射

    data$abstract <- mapply(gsub, pattern = "no abstract available",
                            replacement = " ", data$abstract)
    
  • 使用 stringr 包

    library(stringr)
    data$abstract <- str_replace(data$abstract, "no abstract available", 
                                 " ")
    

此外,请在 StackOverflow 上查看此问题以获取更多信息,例如使用 match 和 qdap 包的解决方案。