如果我有一个矩阵:
mat=matrix(c(-21,14,28,17,-16,-9,-17,-30,18), nrow=3)
mat
[,1] [,2] [,3]
[1,] -21 17 17
[2,] 14 -16 -30
[3,] 28 -9 18
Run Code Online (Sandbox Code Playgroud)
我可以简单地用最高绝对值来隔离
max(abs(mat))
Run Code Online (Sandbox Code Playgroud)
但是,如何保留标志,以便返回-30?对于某些上下文,我有大量的矩阵,我需要一个命令来隔离所有这些中的最高绝对数,包括符号(有些将是正数,其他是负数).
提前致谢!
我有这个代码来给出如下所示的图表:
d=ggplot(df, aes(x=Year, y=NAO_Index, width=.8)) +
+ geom_bar(stat="identity", aes(fill=NAO_Index>0), position='identity', col = 'transparent') +
+ theme_bw() + scale_fill_manual(values=c("royalblue", "firebrick3"), name="NAO Oscillation", labels=c("Negative", "Positive"), guide=guide_legend(reverse=TRUE)) +
theme(legend.position=c(0.06, 0.92)) +
+ theme(axis.title.x=element_text(vjust=-0.2)) +
+ geom_line(data=dfmoveav, aes(x=Year ,y=moveav)) +
+ ylab("NAO Index") +
+ ggtitle("NAO Index between 1860 and 2050") +
+ scale_x_continuous(breaks=c(seq(1860,2050,10))) +
+ scale_y_continuous(breaks=c(seq(-3.5,3.5,0.5)))
Run Code Online (Sandbox Code Playgroud)
我只关心最后一行。在图中,y 轴仅从 -3 到 2.5。我如何将它从 -3.5 提高到 3.5 以便它是偶数?
我确定我犯了一个简单的错误,但无法弄清楚!
提前谢谢了。
我有两个相同大小的不同矩阵,一个有 NA 值,一个没有,例如:
mat=matrix(rnorm(9, mean=20, sd=10), nrow=3)
mat2=matrix(rnorm(9, mean=20, sd=10), nrow=3)
mat2[mat2<20]=NA
mat
[,1] [,2] [,3]
[1,] 21.67730 17.978427 17.24766
[2,] 14.71108 16.970846 30.29543
[3,] 28.65521 9.191494 18.83665
mat2
[,1] [,2] [,3]
[1,] 28.6093 NA 32.26887
[2,] NA NA NA
[3,] NA 20.19428 30.25038
Run Code Online (Sandbox Code Playgroud)
我可以使用以下方法识别 NA 值的坐标(行/列)mat2:
which(is.na(mat2), TRUE)
Run Code Online (Sandbox Code Playgroud)
然后我如何使用这些坐标来替换 中的相同mat值NA?生产:
mat
[,1] [,2] [,3]
[1,] 21.67730 NA 17.24766
[2,] NA NA NA
[3,] NA 9.191494 18.83665
Run Code Online (Sandbox Code Playgroud)
这是最好的方法吗?提前致谢。