[英]replace a column given the position of a negative number of another vector in R?
A<-matrix(c(1,2,1,1,1,2,1,1,1),nrow=3,ncol=3)
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 2 1 1
[3,] 1 2 1
B<-c(1,2,-1)
例如,我想用所有 NA 替換所有第三列,因為 B 中的第三個元素是負數。 我在想這樣的事情
NegNum<-length(B[B<0])
A[,tail(NegNum)]<-NA
負數總是在 B 的最后 n 個位置,所以我嘗試使用 tail 但我不確定它是如何工作的。
我建議基於B
建立索引:
#Matrix 1
A<-matrix(c(1,2,1,1,1,2,1,1,1),nrow=3,ncol=3)
#Vector
B<-c(1,2,-1)
#Solution
A[,which(B<0)]<-NA
輸出:
[,1] [,2] [,3]
[1,] 1 1 NA
[2,] 2 1 NA
[3,] 1 2 NA
這是另一個基本的 R 選項
A %*% diag(replace(B, B < 0, NA))
或者
replace(A,cbind(seq(nrow(A)),rep(which(B<0),nrow(A))),NA)
這使
[,1] [,2] [,3]
[1,] 1 1 NA
[2,] 2 1 NA
[3,] 1 2 NA
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.