Есть ли способ для консоли печатать 2 строки при вызове функции - PullRequest
0 голосов
/ 17 февраля 2019

Итак, я создаю программу на R, которая определяет функцию, которая принимает вектор, вычисляет его длину, печатает длину, и если она больше 10, введите «YES», в противном случае введите «NO»

index<-function(x){
n<-length(x)
n
if(n>10){
"YES"
}
else{
"NO"
}
}

Однако когда я определяю вектор и вызываю функцию, он печатает только «ДА» или «НЕТ», а не длину.

> x<-c(2,5,2,6,8,2,12)
> index(x)
[1] "NO"
> x<-c(2,5,2,6,8,2,12, 5,2,4,6,3,8)
> index(x)
[1] "YES"

Есть ли способ для консоли распечатать как длину, так и "ДА" или "НЕТ"?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Когда вы хотите вернуть два разных типа объектов, я думаю, что целесообразно использовать список.

index <- function(x) {
    n <- length(x)
    list(length = n, n10 = if(n > 10) "YES" else "NO")
}

index(1:8)
# $length
# [1] 8
#
# $n10
# [1] "NO"

index(1:23)
# $length
# [1] 23
#
# $n10
# [1] "YES"
0 голосов
/ 17 февраля 2019

Если вам нужна функция, которая объединяет n и yes / no в одной функции, вы можете сделать:

index<-function(x){
  n<-length(x)
  if(n>10){
    paste(n,"YES")
  }
  else{
    paste(n,"NO")
  }
}  

Например,

> x<-c(2,5,2,6,8,2,12)
> index(x)
[1] "7 NO"
> x<-c(2,5,2,6,8,2,12, 5,2,4,6,3,8)
> index(x)
[1] "13 YES"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...