簡體   English   中英

R 矩陣逐行移位並替換為 NA

[英]R matrix shift by row and replace it with NA

我在R中有以下矩陣。

x <- matrix(1:5,5,5,byrow = T)
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
[2,]    1    2    3    4    5
[3,]    1    2    3    4    5
[4,]    1    2    3    4    5
[5,]    1    2    3    4    5

我想創建一個如下所示的移位矩陣。 基本上我想增加每一行並用NA替換它。 例如,在第 2 行中,第一個值為 NA,並將值移動 1。在第 3 行中,前 2 個值將是 NA,並將值移動 2。我想保持矩陣的大小保持不變。

在此處輸入圖像描述

我們可以用

x1 <- toeplitz(x[1,])
x1[lower.tri(x1)] <- NA

或者另一種選擇是

rbind(x[1,], do.call(rbind, lapply(2:nrow(x), 
       function(i) c(rep(NA, i-1), head(x[i,], -i+1)))))
#      [,1] [,2] [,3] [,4] [,5]
#[1,]    1    2    3    4    5
#[2,]   NA    1    2    3    4
#[3,]   NA   NA    1    2    3
#[4,]   NA   NA   NA    1    2
#[5,]   NA   NA   NA   NA    1

你也可以使用for ,

(現在根據@Shree 的建議進行了清理):

for (i in 2:nrow(x)) x[i, ] <- c(rep(NA, (i-1)), x[i, ])[1:ncol(x)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM