我正在检查具有10000行和6000列的df,如果有与我的引用相似的字符串(此处为:a,b,c)。 我想计算每一行的相似字符串。
我的问题是for循环,特别是第一个循环非常慢。我已经像以前的“提速”评论中那样更改了name_dat [,a],但仍然不够快。我正在寻找一种更智能的方法,而无需检查每一行和每一列中的每个字符串。也许有一种方法可以进行行比较?
x <- data.frame("name" = c("one","two","three"), "X1" = c("c","c","b"), "X2" = c("b","b","a"), "X3" = c("a","c","b"), "X4" = c("b","c","b"),stringsAsFactors = F)
y <- data.frame("name" = c("reference"), "X1" = c("c"), "X2" = c("a"), "X3" = c("b"), "X4" = c("b"),stringsAsFactors = F)
sum_list <- list()
df <- y[-1,-1] #df only with colnames
for (a in 1:length(x[,1])) {
name_dat <- x[a,][-1]
for (b in 1:length(x[,-1])) {
n <- name_dat[,b]
m <- y[-1][,b]
if (n == m) {name_dat[,b] <- n}
else {name_dat[,b] <- NA}
} # end first loop
sum_list[[a]] <- length(x[,-1]) - rowSums(is.na(name_dat))
} #end second loop
使用sum_list,我可以得到具有类似字符串数量的结果df。但是我希望有一个使用apply函数的更好/更快的方法,但是我不知道这对字符串如何起作用