我的目标是生成这样的序列:
> c(1, rep(9, 7))
[1] 1 9 9 9 9 9 9 9
> c(9, 1, rep(9, 6))
[1] 9 1 9 9 9 9 9 9
> c(rep(9, 2), 1, rep(9, 5))
[1] 9 9 1 9 9 9 9 9
本质上,我有一个保持不变的序列,但我想移动一个值,一次一个空格。
显然,我可以用与我所做的类似的方式写出来,但我的实际序列要大得多,所以这不太实用。我对此的搜索有些徒劳,因此我们将不胜感激。谢谢
最佳答案
您可以创建一个矩阵并替换对角线,即
m1 <-matrix(data = 9, nrow = 8, ncol = 8)
diag(m1) <- 1
m1
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
#[1,] 1 9 9 9 9 9 9 9
#[2,] 9 1 9 9 9 9 9 9
#[3,] 9 9 1 9 9 9 9 9
#[4,] 9 9 9 1 9 9 9 9
#[5,] 9 9 9 9 1 9 9 9
#[6,] 9 9 9 9 9 1 9 9
#[7,] 9 9 9 9 9 9 1 9
#[8,] 9 9 9 9 9 9 9 1
一个衬里是:
`diag<-`(matrix(data = 9, nrow = 8, ncol = 8),1)
关于r - 沿序列移动值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41159808/