【问题标题】:How can I create a vector by only using for loop? (vector is specified in the body)如何仅使用 for 循环创建向量? (向量在正文中指定)
【发布时间】:2020-05-27 07:07:27
【问题描述】:

(1,2,2,3,3,3,4,4,4,4,...,n,...,n)

我想通过 for 循环制作上述向量,但不使用 rep 函数或其他函数。这可能不是在 stackoverflow 中提出的好问题,但由于我是 R 的新手,我敢在这里寻求帮助。

(可以假设向量的长度是10)

【问题讨论】:

  • 可以使用哪些功能?

标签: r for-loop vector


【解决方案1】:

使用for 循环,可以使用

n <- 10
out <- c()
for(i in seq_len(n)){
      for(j in seq_len(i)) {                   
         out <- c(out, i)
           }                  

}

R,否则,可以这样做

rep(seq_len(n), seq_len(n))

【讨论】:

  • 我想 OP 要求这个是为了家庭作业或与学校有关的事情,但有什么实际原因为什么有人会使用 for 循环而不是 rep()seq() speedwise?
  • @Gainz 可能是为了了解如何在循环中完成。
  • @Gainz 只是想知道它是如何运作的。由于我来自其他语言,rep() 类型的函数对我来说是新的,并且想知道循环以更好地理解;)
【解决方案2】:

我已经被@akrun 打败了几秒钟,即使如此,我还是想给你一些提示如果使用rep 是可能的,这可能对你使用 R 有所帮助。 (不使用rep,看@akrun)

简答使用rep

rep(1:n, 1:n)

长答案使用rep

在发布问题之前,您应该尝试开发自己的解决方案并分享它们。 尝试谷歌搜索并分享您已经找到的内容通常也很好。请看"help/how-to-ask"

让我们一起努力吧。 首先,我们应该尝试看看官方来源:

从前两个(以及其他来源)中,您会发现两个有趣的函数:

  • : 运算符:可用于生成从ab 的整数序列,如a:b。例如,输入 1:3 会为您提供 1, 2, 3 向量
  • rep(x, t) 是一个函数,可用于复制项目 x t 次。

您还需要知道 R 是“面向向量的”,即它在向量上应用函数,而无需键入显式循环。 例如,如果你调用repl(1:3, 2),它(几乎)相当于运行:

for(i in 1:3)
    rep(i, 2)

通过结合前面两个函数和 R 是“面向向量”的概念,你得到了rep(1:n, 1:n) 解决方案。

【讨论】:

    【解决方案3】:

    我不知道你为什么不想使用rep,但这里有一种方法,在循环中不使用它或任何类似于rep 的函数。

    `for (i in 1:10){
      a<-NA
      a[1:i] <- i
      if (i==1){b<-a}
      else if (i >1){b <- c(b,a)}
      assign("OutputVector",b,envir = .GlobalEnv)
      }`
    `OutputVector`
    

    选择 10 的 n 似乎是主观的,所以我只是对数字 1 到 10 进行了循环,如果你愿意,你可以取向量中的前 10 个数字。 OutputVector[1:10]

    【讨论】:

      【解决方案4】:

      您可以使用单个循环来执行此操作,尽管它是 while 而不是 for

      n <- 10
      x <- 1; 
      i <- 2; 
      
      while(i <= n) 
      {
       x <- c(x, 1/i); 
       if(sum(x) %% 1 == 0) i = i + 1; 
      }
      
      1/x
      

      【讨论】:

        猜你喜欢
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 2019-04-30
        • 1970-01-01
        • 2022-01-08
        • 2015-11-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多