用应用功能替换循环

问题描述 投票:0回答:1

我想用R中的适当Apply函数替换嵌套的for循环。

我声明一个具有以下尺寸的矩阵-ncol为412,nrow为2164

dist.name.enh <- matrix(NA, ncol = length(WW_name),nrow = length(Px_name))

用于计算字符串距离的for循环如下

for(i in 1:length(WW_name)) {
  for(j in 1:length(Px_name)) {

    dist.name.enh[j,i]<-stringdist(tolower(WW_name)[i],
                                   tolower(Px_name)[j],
                                   method = "lv")
  }  
}

我如何避免for循环,因为返回矩阵会花费很长时间。

R-bloggers website中查找代码

r for-loop lapply sapply stringdist
1个回答
0
投票

您可以在此处使用outer,它将功能应用于xy的每种组合。

outer(tolower(x), tolower(y), stringdist::stringdist, method = "lv")

例如

x <- c("random", "strings", "to", "test")
y <- c("another", "string", "test")

outer(x, y, stringdist::stringdist, method = "lv")

#      [,1] [,2] [,3]
#[1,]    6    6    6
#[2,]    7    1    6
#[3,]    6    5    3
#[4,]    6    5    0
© www.soinside.com 2019 - 2024. All rights reserved.