Tri bord:R中的lower.tri ()示例

关于Tri bord的问题,在tri function中经常遇到, 这个星期五下午我的大脑一定不能太敏锐,在来自 Rhttp://stat.ethz.ch/R-manual/R-patched/library/base/html/lower.tri.html中的 lower.tri()函数的示例中,您可以将矩阵的所有下三角元素转换为 NA,如下所示。

这个星期五下午我的大脑一定不能太敏锐,在来自 Rhttp://stat.ethz.ch/R-manual/R-patched/library/base/html/lower.tri.html中的 lower.tri()函数的示例中,您可以将矩阵的所有下三角元素转换为 NA,如下所示。

(m2 <- matrix(1:20, 4, 5))
lower.tri(m2)
m2[lower.tri(m2)] <- NA 
m2

而不是写在现有的m2对象,我将如何保存结果在一个新的对象,说m3

我试过:

m3 <- m2[lower.tri(m2)] <- NA
m3

返回NA

我可以通过将整个东西包装在一个函数中得到我想要的结果。

lower.tri.na <- function(m2) {
m2[lower.tri(m2)] <- NA
return(m2)
}
m3 <- lower.tri.na(m2)
m3

的代码也有效(但我真的想使用lower.tri()函数):

m3 <- ifelse(row(m2) > col(m2), NA, m2)

有没有更好(更有效)的方法?...我的猜测是肯定的。(和愚蠢的问题为什么这个代码或风格的 assingment 工作m3 <- m2[lower.tri(m2)] <- NA)。提前感谢。

2

最简单的答案是

m3<-m2
m3[lower.tri(m3)] <- NA

或者你可以做

m3<-`[<-`(m2, lower.tri(m2), NA)

这看起来很尴尬,但它的工作原理,你基本上拦截的值,从[]<-什么通常会取代在赋值变量,并将其发送到一个新的变量。\

而且您的m3 <- m2[lower.tri(m2)] <- NA策略在这里不起作用,因为当您执行a <- b <- c时,与a <- (b <- c)相同,与a <-c; b<-c相同,因为赋值运算符通常会传递方程右侧的内容。因此,您只是在做m3<-NA。有一个特殊的矩阵运算符,称为[<-

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(174)
Ie7.0浏览器:xbox360IE浏览器测试:
上一篇
C#internal:内部VS公共在C#(internal vs public c#)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(55条)