R(试图理解逻辑以用lapply()替换循环)

学向勤中得,萤窗万卷书。这篇文章主要讲述R:试图理解逻辑以用lapply()替换循环相关的知识,希望能为你提供帮助。
我是R的初学者,我想更熟悉apply()函数,因为在我所知的情况下,循环通常在R中被避免。
有一些双循环或三循环(循环内循环内的循环),我很难用lapply()函数“替换”它们。
所以,例如我有以下代码:

im < - 1 ig < - 1 for(im in 1:nrow(dataframe1)){ for(ig in 1:nrow(dataframe2)){ if(grepl(dataframe2$name[ig], dataframe1$Text[im])){ dataframe1$reference[im] < - dataframe1$reference[im] + 1 cat("match found between:", im, "and ig:", ig) ig < - ig + 1 }else{ cat("no word match found between im:", im, "and ig:", ig) ig < - ig + 1 }} im < - im + 1 ig < - 1 }

【R(试图理解逻辑以用lapply()替换循环)】我怎么能用R中的lapply()(或apply()或sapply())函数替换这两个循环?希望在此之后进入apply()逻辑。
答案我试图用*apply函数重写你的循环(纠正),我相信在这种情况下你最好用旧的for循环。
使用组成的数据集,这是您的代码,但是正确。
dataframe1 < - data.frame(Text = c("Ronald Fisher", "Karl Pearson", "William Gosset", "Harald Cramer", "Andrey Kolmogorov"), reference = 11:15, stringsAsFactors = FALSE)dataframe2 < - data.frame(name = c("Ronald", "Harald"), stringsAsFactors = FALSE)for(im in 1:nrow(dataframe1)){ for(ig in 1:nrow(dataframe2)){ if(grepl(dataframe2$name[ig], dataframe1$Text[im])){ dataframe1$reference[im] < - dataframe1$reference[im] + 1 cat("match found between:", im, "and ig:", ig, " ") }else{ cat("no word match found between im:", im, "and ig:", ig, " ") } } }dataframe1 #Text reference #1Ronald Fisher12 #2Karl Pearson12 #3William Gosset13 #4Harald Cramer15 #5 Andrey Kolmogorov15


    推荐阅读