如何编写R代码以按以下行打印数字模式:
在R中编写程序以打印n行的以下内容时,需要使用哪些函数:如何编写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的初学者,
[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