函数值的向量?

时间:2018-12-05 15:27:27

标签: r

我有一个带有while循环的函数,该函数为每个循环返回不同的值。如何在一个向量中显示不同的值?现在我有该功能,它还可以,但是对于我的练习,我需要vector中的值,而我却无法弄清楚。

我已经尝试使用

print(paste("Lösungsvektor:", b))

但是我不知道如何在函数中实现矢量。

Collatz <- function(n) {
 while (n != 1) {
  print(n)
  if(n %% 2 == 0){
  n <- n/2
 }else{
  n <- n*3+1
  }
}
print(1)
}

Collatz(22)

1 个答案:

答案 0 :(得分:2)

首先,您的函数实际上不返回任何内容,仅返回打印内容,因此我们需要对其进行修复。它返回的是一个向量,应该在while循环进行时进行构建。这是一个选择:

Collatz <- function(n) {
     j<-2
     output<-n
     while (n != 1) {
         if(n %% 2 == 0){
             n <- n/2
         }else{
             n <- n*3+1
         }
     output[j]<-n
     j<-j+1
     }
     output
 }

 Collatz(22)
 [1] 22 11 34 17 52 26 13 40 20 10  5 16  8  4  2  1