如何编写R代码以按以下行打印数字模式:

如何编写R代码以按以下行打印数字模式:,r,R,在R中编写程序以打印n行的以下内容时,需要使用哪些函数: [1] 1 [1] 2 3 [1] 4 5 6 [1] 7 8 9 10 [1] 11 12 13 14 15 [1] .... 我已尝试使用for()创建循环: triangle=c() for(i in 2:100){for(j in 2:i-1){triangle=c(triangle,j)} print(triangle) triangle=c()} 但是每行从1开始,到100行结束,这就是我被卡住的地方 我是R的初学者,

在R中编写程序以打印n行的以下内容时,需要使用哪些函数:

[1] 1
[1] 2 3
[1] 4 5 6
[1] 7 8 9 10
[1] 11 12 13 14 15
[1] .... 
我已尝试使用
for()
创建循环:

triangle=c()
for(i in 2:100){for(j in 2:i-1){triangle=c(triangle,j)}
print(triangle) 
triangle=c()}
但是每行从1开始,到100行结束,这就是我被卡住的地方


我是R的初学者,所以请用最简单的术语回答!:)

我不确定您何时想要中断循环,但这里尝试使用
while
条件:

i <- 1
num <- 0
while(i <= 100) {
    n <- i + num
    cat(i:n, '\n')
    i <- n + 1
    num <- num + 1
}

1 
2 3 
4 5 6 
7 8 9 10 
11 12 13 14 15 
16 17 18 19 20 21 
22 23 24 25 26 27 28 
29 30 31 32 33 34 35 36 
37 38 39 40 41 42 43 44 45 
46 47 48 49 50 51 52 53 54 55 
56 57 58 59 60 61 62 63 64 65 66 
67 68 69 70 71 72 73 74 75 76 77 78 
79 80 81 82 83 84 85 86 87 88 89 90 91 
92 93 94 95 96 97 98 99 100 101 102 103 104 105  

i我不确定何时要中断循环,但这里尝试使用
while
条件:

i <- 1
num <- 0
while(i <= 100) {
    n <- i + num
    cat(i:n, '\n')
    i <- n + 1
    num <- num + 1
}

1 
2 3 
4 5 6 
7 8 9 10 
11 12 13 14 15 
16 17 18 19 20 21 
22 23 24 25 26 27 28 
29 30 31 32 33 34 35 36 
37 38 39 40 41 42 43 44 45 
46 47 48 49 50 51 52 53 54 55 
56 57 58 59 60 61 62 63 64 65 66 
67 68 69 70 71 72 73 74 75 76 77 78 
79 80 81 82 83 84 85 86 87 88 89 90 91 
92 93 94 95 96 97 98 99 100 101 102 103 104 105  

i或使用
sum(1:n)=n*(n+1)/2的另一种可能性

或每隔一行反转一次:

for (n in 1:10) {
  if (n%%2 ==1) {
    print(seq((n-1)*n/2+1 , n*(n+1)/2))
  } else {
    print(seq(n*(n+1)/2, (n-1)*n/2+1 ))
  }
}

[1] 1
[1] 3 2
[1] 4 5 6
[1] 10  9  8  7
[1] 11 12 13 14 15
[1] 21 20 19 18 17 16
[1] 22 23 24 25 26 27 28
[1] 36 35 34 33 32 31 30 29
[1] 37 38 39 40 41 42 43 44 45
 [1] 55 54 53 52 51 50 49 48 47 46

或者使用
sum(1:n)=n*(n+1)/2的另一种可能性

或每隔一行反转一次:

for (n in 1:10) {
  if (n%%2 ==1) {
    print(seq((n-1)*n/2+1 , n*(n+1)/2))
  } else {
    print(seq(n*(n+1)/2, (n-1)*n/2+1 ))
  }
}

[1] 1
[1] 3 2
[1] 4 5 6
[1] 10  9  8  7
[1] 11 12 13 14 15
[1] 21 20 19 18 17 16
[1] 22 23 24 25 26 27 28
[1] 36 35 34 33 32 31 30 29
[1] 37 38 39 40 41 42 43 44 45
 [1] 55 54 53 52 51 50 49 48 47 46

在包含100行的行之前,我不清楚您是想要行,还是想要100行。下面我假设了其中的第一行,但是如果您想要100行,请删除设置k的行,并用
n替换n的计算(我们从k派生),直到包含100行的行,我不清楚您是想要行,还是想要100行。下面我假设了其中的第一行,但如果您想要100行,请删除设置k的行,并用
npurr样式替换n的计算(我们从k派生)

imap(1:10, ~seq.int((.x-1)*.x/2 +1, length.out = .y))

[[1]]
[1] 1

[[2]]
[1] 2 3

[[3]]
[1] 4 5 6

[[4]]
[1]  7  8  9 10

[[5]]
[1] 11 12 13 14 15

[[6]]
[1] 16 17 18 19 20 21

[[7]]
[1] 22 23 24 25 26 27 28

[[8]]
[1] 29 30 31 32 33 34 35 36

[[9]]
[1] 37 38 39 40 41 42 43 44 45

[[10]]
 [1] 46 47 48 49 50 51 52 53 54 55
如果有用的话,也可以使用一些连接样式

imap_chr(1:10, ~ paste(seq.int((.x-1)*.x/2 +1, length.out = .y), collapse = " "))

 [1] "1"                            
 [2] "2 3"                          
 [3] "4 5 6"                        
 [4] "7 8 9 10"                     
 [5] "11 12 13 14 15"               
 [6] "16 17 18 19 20 21"            
 [7] "22 23 24 25 26 27 28"         
 [8] "29 30 31 32 33 34 35 36"      
 [9] "37 38 39 40 41 42 43 44 45"   
[10] "46 47 48 49 50 51 52 53 54 55"
呼噜式

imap(1:10, ~seq.int((.x-1)*.x/2 +1, length.out = .y))

[[1]]
[1] 1

[[2]]
[1] 2 3

[[3]]
[1] 4 5 6

[[4]]
[1]  7  8  9 10

[[5]]
[1] 11 12 13 14 15

[[6]]
[1] 16 17 18 19 20 21

[[7]]
[1] 22 23 24 25 26 27 28

[[8]]
[1] 29 30 31 32 33 34 35 36

[[9]]
[1] 37 38 39 40 41 42 43 44 45

[[10]]
 [1] 46 47 48 49 50 51 52 53 54 55
如果有用的话,也可以使用一些连接样式

imap_chr(1:10, ~ paste(seq.int((.x-1)*.x/2 +1, length.out = .y), collapse = " "))

 [1] "1"                            
 [2] "2 3"                          
 [3] "4 5 6"                        
 [4] "7 8 9 10"                     
 [5] "11 12 13 14 15"               
 [6] "16 17 18 19 20 21"            
 [7] "22 23 24 25 26 27 28"         
 [8] "29 30 31 32 33 34 35 36"      
 [9] "37 38 39 40 41 42 43 44 45"   
[10] "46 47 48 49 50 51 52 53 54 55"
已更新 我刚刚修复的代码中有一个小故障

这里是另一种产生你想要的结果的方法。我决定将其转换为函数,以便您可以选择行数:

f <- function(n = 10) {
  out <- c(1)
  print(out)
  
  for(i in 2:n) {
    result <- seq(out[length(out)] + 1, length = i)
    out <- c(out, result)
    print(result)
  }
}

f(15)

[1] 1
[1] 2 3
[1] 4 5 6
[1] 7  8  9 10
[1] 11 12 13 14 15
[1] 16 17 18 19 20 21
[1] 22 23 24 25 26 27 28
[1] 29 30 31 32 33 34 35 36
[1] 37 38 39 40 41 42 43 44 45
[1] 46 47 48 49 50 51 52 53 54 55
[1] 56 57 58 59 60 61 62 63 64 65 66
[1] 67 68 69 70 71 72 73 74 75 76 77 78
[1] 79 80 81 82 83 84 85 86 87 88 89 90 91
[1] 92  93  94  95  96  97  98  99 100 101 102 103 104 105
[1] 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120

f更新
我刚刚修复的代码中有一个小故障

这里是另一种产生你想要的结果的方法。我决定将其转换为函数,以便您可以选择行数:

f <- function(n = 10) {
  out <- c(1)
  print(out)
  
  for(i in 2:n) {
    result <- seq(out[length(out)] + 1, length = i)
    out <- c(out, result)
    print(result)
  }
}

f(15)

[1] 1
[1] 2 3
[1] 4 5 6
[1] 7  8  9 10
[1] 11 12 13 14 15
[1] 16 17 18 19 20 21
[1] 22 23 24 25 26 27 28
[1] 29 30 31 32 33 34 35 36
[1] 37 38 39 40 41 42 43 44 45
[1] 46 47 48 49 50 51 52 53 54 55
[1] 56 57 58 59 60 61 62 63 64 65 66
[1] 67 68 69 70 71 72 73 74 75 76 77 78
[1] 79 80 81 82 83 84 85 86 87 88 89 90 91
[1] 92  93  94  95  96  97  98  99 100 101 102 103 104 105
[1] 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120


f“while”条件是否可以将交替线的反转整合到图案中?i、 e.#1#23#6 5 4#7 8 9 10#15 14 13 11#。。。如果是/否,哪些功能将启用此功能?@Anastasia查看更新的答案。“while”条件是否可以将交替线的反转整合到模式中?i、 e.#1#23#6 5 4#7 8 9 10#15 14 13 11#。。。如果是/否,哪些函数将启用此功能?@Anastasia查看更新的答案。关于每隔一行反转,如果
s
与答案相同,那么
s[c(真,假)]关于每隔一行反转,如果
s
与答案相同,那么
s[c(真,假)]查看我的编辑:每秒钟反转一次查看我的编辑:每秒钟反转一次您知道我决定暂停使用此函数的
purr
函数:))您知道我决定暂停使用此函数的
purr
函数:))
f <- function(n = 10) {
  out <- c(1)
  print(out)
  
  for(i in 2:n) {
    result <- seq(out[length(out)] + 1, length = i)
    out <- c(out, result)
    print(result)
  }
}

f(15)

[1] 1
[1] 2 3
[1] 4 5 6
[1] 7  8  9 10
[1] 11 12 13 14 15
[1] 16 17 18 19 20 21
[1] 22 23 24 25 26 27 28
[1] 29 30 31 32 33 34 35 36
[1] 37 38 39 40 41 42 43 44 45
[1] 46 47 48 49 50 51 52 53 54 55
[1] 56 57 58 59 60 61 62 63 64 65 66
[1] 67 68 69 70 71 72 73 74 75 76 77 78
[1] 79 80 81 82 83 84 85 86 87 88 89 90 91
[1] 92  93  94  95  96  97  98  99 100 101 102 103 104 105
[1] 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120