簡體   English   中英

替換給定 R 中另一個向量的負數位置的列?

[英]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.

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