Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
524 views
in Technique[技术] by (71.8m points)

r - How to replace lower/upper triangular elements of a matrix?

My question:

Amat <- diag(4)

I would like to replace all the lower triangular values of Amat (i.e. Amat[2,1], Amat[3,1], Amat[3,2], and so on) with a value I choose (e.g. NA).

Obviously I do not want to replace each element one by one.

Could you show me the most efficient way to do it with a single command?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

This is pretty well documented in the docs for upper.tri.

Amat[upper.tri(Amat)] <- NA
Amat
#      [,1] [,2] [,3] [,4]
# [1,]    1   NA   NA   NA
# [2,]    0    1   NA   NA
# [3,]    0    0    1   NA
# [4,]    0    0    0    1

Of course, Amat[lower.tri(Amat)] <- NA would do the same for converting the lower triangle to NAs.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...