Как вручную построить функцию заказа в R? - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь построить свою собственную функцию порядка в R, которая может упорядочить вектор длины 2.

Это вопрос, который меня просят завершить ... Напишите функцию, которая принимает один аргумент x длины 2 и возвращает упорядоченные значения x. То есть, если x_2<x_1, ваша функция должна вернуть c(x_2,x_1), в противном случае она должна вернуть x. (ЗАПИШИТЕ СВОЮ СОБСТВЕННУЮ ФУНКЦИЮ. НЕ ИСПОЛЬЗУЙТЕ СОЗДАНИЕ В ПОРЯДКЕ ФУНКЦИИ) Это код, который я пытаюсь использовать

x = (c(3,1))
orders = function(x){
  for(i in 1:length(x))
  if(x[i+1] < x[i]){
    print(c(x[i+1], x[i]))} else{
      (return(x))
  }}


orders(x)

, но он выдаёт мне этот вывод с ошибкой

[1] 1 3
Error in if (x[i + 1] < x[i]) { : missing value where TRUE/FALSE needed

это правильный ответ, но я не уверен, как исправить ошибку, какие-либо предложения?

1 Ответ

0 голосов
/ 06 февраля 2020

Поскольку вы говорите, что x имеет длину только два, почему бы не что-то вроде:

my_order <- function(x) {
    if (x[1] < x[2]) {
        return(x)
    } else {
        return(rev(x))
    }
}

Если первый элемент меньше второго элемента, верните исходный вектор; в противном случае измените порядок с помощью rev().

Попробуйте сами с помощью:

x1 <- c(3,1)
x2 <- c(2,3)
x3 <- c(101, -1)

my_order(x1)
my_order(x2)
my_order(x3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...