我是R的新手,正在尝试弄清楚如何解决此问题。
编写一个名为steps()的函数,该函数可为任何n建立一个方形楼梯。
这是我最初的目的
steps<- function(n)
{
mx <- matrix(,nrow=n,ncol = n)
for( n in 1:n)
{
mx[n,n] = "#"
}
print(mx)
}
答案 0 :(得分:3)
steps <- function(n) {
m <- matrix('', n, n)
m[!upper.tri(m)[,n:1]] <- '#'
m
}
steps(5)
# [,1] [,2] [,3] [,4] [,5]
# [1,] "" "" "" "" "#"
# [2,] "" "" "" "#" "#"
# [3,] "" "" "#" "#" "#"
# [4,] "" "#" "#" "#" "#"
# [5,] "#" "#" "#" "#" "#"
如果(不想像您的图片一样)您不想看到引号,那么
print(steps(5), quote = FALSE)
# [,1] [,2] [,3] [,4] [,5]
# [1,] #
# [2,] # #
# [3,] # # #
# [4,] # # # #
# [5,] # # # # #
答案 1 :(得分:-1)
OP解决方案的问题是for循环和索引不足。以下代码将在mx [1,1],mx [2,2],mx [3,3],...,mx [n,n]处索引。
for(n in 1:n)
{
mx[n,n] = "#"
}
使用第二个for循环可以使第一个for循环在行中遍历,而第二个遍历各列。使用以下类似内容将通过访问mx [1,1],mx [2,1],mx [2,2],...,mx [n,n]创建楼梯。
for (i in 1:n)
for (j in 1:i)
{
mx[i, j] = "#"
}
将创建一个楼梯。
steps <- function(n)
{
mx <- matrix('', nrow = n, ncol = n)
for (i in 1:n)
for (j in 1:i)
{
mx[i, j] = "#"
}
mx
}
print(steps(5), quote = FALSE)
我建议打印出变量i和j,以查看
之类的情况。print(paste(i, j, sep = ' '))
所以您可以看到循环中发生了什么。