Цикл в R, извлекающий последнюю строку вывода - PullRequest
0 голосов
/ 12 декабря 2018

Привет, ребята,

Я пытался извлечь значения из цикла некоторое время, но, кажется, я просто не могу найти ответ.

Для простоты, вот код, который я использую в программе 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 голосов
/ 12 декабря 2018

Просто включите return(Calculus2) в конце и вставьте break в оператор if.

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)
}
...