循环函数,直到两个数据集之间的长度在 R 中相等

Looping the function until the length between two dataset are equal in R

提问人:C. Guff 提问时间:4/19/2023 最后编辑:C. Guff 更新时间:4/19/2023 访问量:37

问:

在不同的数据集上应用函数时,我意识到对于具有相应观察量的数据集,输出中不包括一些观察值(请参阅前面的问题st_network_blend不包括所有点)。 因此,我的想法是过滤原始数据集并重新启动操作,将第二个输出绑定到第一个输出,只要不包括观测值,就可以重复该过程。

我已经尝试了下面的功能。我在原始数据帧上应用我创建的函数。之后,输出与原始输出之间的差异被提取为 。如果向量的长度为 0,则输出不需要校正。如果长度大于 0,则循环必须开始过滤、应用代码、绑定输出并评估与原始数据帧的差异。distfn()DiffDiff

Distloop <- function(dfInj){
  dist  = distfn(dfInj)
  Diff = setdiff(Inj$ID, dist$ID)
  x <- as.numeric(length(Diff))
  if(as.numeric(length(Diff)) == 0){
    dist
  } else {
    while(x != 0){
      dfInjb <- dfInj %>% filter(ID == Diff)
      distb <- distfn(dfInjb)
      dist <- dist %>% rbind(distb)
      Diff = setdiff(Inj$ID, dist$ID)
      x <- as.numeric(length(Diff))
    }
  }
}

问题出在功能上...while

P.S.:不幸的是,由于说明问题所需的数据集的大小,我无法加入任何可重复的例子。 不过,您可以看一下该问题中给出的示例st_network_blend该示例不包括所有要点

r if 语句 while 循环

评论

4赞 Limey 4/19/2023
循环后似乎没有返回值。更改最后三行可以解决您的问题吗?顺便说一句,递归解决方案在这里可能是一个更简洁的解决方案......如果您准确指定“问题”是什么,那将会很有帮助。while}; dist; }; }
1赞 C. Guff 4/19/2023
谢谢,它有效!如果您想了解更多详细信息,我已经更新了链接的问题,其中我包含了更正的代码作为答案。

答: 暂无答案