【问题标题】:Constructing vectors using (nested)loops in R在 R 中使用(嵌套)循环构造向量
【发布时间】:2017-07-04 03:47:56
【问题描述】:

我在互联网上浏览了很多论坛,但找不到明确的答案,因此我决定在这里发布。我正在使用的程序是 R。

以下问题是我似乎无法找到解决方案的地方。我的任务是使用嵌套循环构造一个向量 (1,2,2,3,3,3...,10,...,10)(所以没有 rep())。到目前为止,我设法构建了所有元素的列表,但无法将其转换为所需的向量。我尝试了很多方法,比如将数据转换为矩阵并转置等。

到目前为止,没有一种方法有效,也许对此事有更深入了解的人可以帮助我。

这是我目前得到的:

for (i in 1:10){
  for (j in 1:10)
    if (j<=i)
    {
      x = c(i)
    print(x)
  }
}

这为我提供了:

[1] 1
[1] 2
[1] 2
[1] 3
[1] 3
[1] 3
[1] 4
[1] 4
[1] 4
[1] 4
[1] 5
[1] 5
[1] 5
[1] 5
[1] 5
[1] 6
[1] 6
[1] 6
[1] 6
[1] 6
[1] 6
[1] 7
[1] 7
[1] 7
[1] 7
[1] 7
[1] 7
[1] 7
[1] 8
[1] 8
[1] 8
[1] 8
[1] 8
[1] 8
[1] 8
[1] 8
[1] 9
[1] 9
[1] 9
[1] 9
[1] 9
[1] 9
[1] 9
[1] 9
[1] 9
[1] 10
[1] 10
[1] 10
[1] 10
[1] 10
[1] 10
[1] 10
[1] 10
[1] 10
[1] 10

提前致谢!

【问题讨论】:

  • rep(1:10,times=1:10) 呢?
  • x=c(x,i) 而不是 x=c(i)
  • 感谢@NicE 的快速回复我不允许使用rep();
  • @user31264 没成功
  • 另一种选择:cumsum(sequence(1:10)==1)

标签: r loops vector sequence


【解决方案1】:

如果将结果存储在向量中,而不是打印出来,这是剩下的问题,可以这样做:

result <- vector(mode = "integer")
k <- 1
for (i in 1:10){
  for (j in 1:10)
    if (j<=i)
    {
      result[k] = c(i)
      k <- k+1
    }
}
head(result)

【讨论】:

  • 你应该在你的答案中添加一些描述。
  • 欢迎来到 Stack Overflow!虽然欢迎使用此代码 sn-p,并且可能会提供一些帮助,但它将是 greatly improved if it included an explanation如何为什么 这可以解决问题。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人!请edit您的答案添加解释,并说明适用的限制和假设。
猜你喜欢
  • 1970-01-01
  • 2020-01-29
  • 2019-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-09
  • 2011-12-15
相关资源
最近更新 更多