程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了R for 循环在 1000 次迭代后生成 NA大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决R for 循环在 1000 次迭代后生成 NA?

开发过程中遇到R for 循环在 1000 次迭代后生成 NA的问题如何解决?下面主要结合日常开发的经验,给出你关于R for 循环在 1000 次迭代后生成 NA的解决方法建议,希望对你解决R for 循环在 1000 次迭代后生成 NA有所启发或帮助;

我有一个简单的 for 循环,我用它来从数据框中删除任何涉及共享相似字符串的两个变量的行,当我运行循环时,它会迭代 1000 次,然后开始生成 NA,这会破坏我的循环。

@H_450_7@到期 @H_450_7@quote_datetiR_918_11845@e
2021-02-26 2021-02-26 10:00:00
2021-02-26 2021-02-27 10:00:00
for(row in 1:nrow(df)){
  if(grepl(df$expiration[row],df$quote_datetiR_918_11845@e[row],fixed=TRUE) == TRUE){
    df = df[-row,]
  }
}

我收到错误消息

如果 (grepl(df$expiration[row],: 需要 TRUE/falSE 的缺失值

每次我运行它时,它都会消除更多的行,直到它用完任何其他要消除的行,然后它就会无误地运行。感谢帮助。

解决方法

出现问题是因为原始数据 'df' 获得子集 if 条件为 TRUE,即对于每个 if TRUE 情况,它会少一行。如果我们复制数据可以解决

df2 <- df
for(row in 1:nrow(df)){
   if(grepl(df$expiration[row],df$quote_datetiR_918_11845@e[row],fixed=TRUE)){
     df2 <- df2[-row,]
    }
   }

此外,grepl 仅针对 'x' 进行矢量化,而不针对 pattern 因此,如果我们需要进行矢量化,可能需paste {{1} }一起

pattern

或者使用对 'x' 和 'pattern 进行矢量化的函数,即 df <- df[!grepl(paste(df$expiration,collapse="|"),df$quote_datetiR_918_11845@e,fixed = TRUE),]

str_detect

大佬总结

以上是大佬教程为你收集整理的R for 循环在 1000 次迭代后生成 NA全部内容,希望文章能够帮你解决R for 循环在 1000 次迭代后生成 NA所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。