在R中循环,提取输出的最后一行

时间:2018-12-12 19:07:24

标签: r function loops

嗨,

一段时间以来,我一直在尝试从循环中提取值,但是似乎我找不到答案。

为简单起见,这是我在R程序中使用的代码:

seatsInitial <- function (df,x,y) {
for (i in ModQuota) {
filtered = subset(df, Poll> x)
OnlyPoll <- filtered$Poll
Calculus <- OnlyPoll/i
Calculus2 <- floor(Calculus)
print(Calculus2)
if(sum(Calculus2) == y)
  stop("WE GOT IT")
}
}

然后,得到结果:

seatsInitial(PartiesE, 5, 33)

循环正常工作,我能够获得所需的结果。 满足条件时,循环停止。但是,我还需要将输出的最后一行(当循环由于满足条件而停止时)转换为向量。

您是否知道该怎么做?

如果运行循环,则会得到以下结果(此处仅显示输出的最后5行):

[1]  8 14  4  3  5
[1]  8 14  4  3  5
[1]  8 14  4  3  5
[1]  8 14  4  3  5
[1]  7 14  4  3  5
Error in seatsInitial(PartiesEPP, 5, 33) : WE GOT IT

因此,我需要将最后一行(7,14,4,3,5)转换为向量。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

只需在末尾包含return(Calculus2),并在if语句中包含break

seatsInitial <- function (df,x,y) {
for (i in ModQuota) {
filtered = subset(df, Poll> x)
OnlyPoll <- filtered$Poll
Calculus <- OnlyPoll/i
Calculus2 <- floor(Calculus)
print(Calculus2)
if(sum(Calculus2) == y){
  print("WE GOT IT")
  break
  }
}
return(Calculus2)
}