рассчитать минимальное и максимальное использование для циклов в R - PullRequest
0 голосов
/ 30 ноября 2018

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

d <- c(34,67,123,554,76)
m<-0
e<-0
for(i in d)  { if(d>i) { m<-d[i]
  print("max") 
} else if (d>i) { e<-d[i]
  print("min")
}}  

и дает мне [1] "max" ...

что не так?

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Причина ошибки / предупреждения, вам нужно сравнить m и e с i не с полным вектором d.

Примерно так:

# example input
d <- c(34,67,123,554,76)

foo <- function(x){
  # some checks for input x
  # ...

  myMin <- x[1] 
  myMax <- x[1] 

  for(i in x[-1])  {
    if(i < myMin) { myMin <- i}
    if(i > myMax) { myMax <- i}
  }  
  # return
  c(Min = myMin, Max = myMax)
}

foo(d)
# Min Max 
#  34 554 
0 голосов
/ 30 ноября 2018

Вы можете использовать all() для проверки вектора d по одному его элементу:

d <- c(34,67,123,554,76)
m<-0
e<-0
for(i in d){
  if(all(d <= i)){ 
    m <- i
    print(paste0("max = ", m))
}else if(all(d >= i)) { 
  e <- i
  print(paste0("min = ", e))
}}

[1] "min = 34"
[1] "max = 554"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...