全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1117 5
2012-12-25
问题是这样的:
BL<-diag(w/abs(lm1))
其中w,lm1均为向量。比如说六维
这样的话,做出BL为6*6矩阵。
但是实际数据中,lm1中的某些值有可能是0,当存在0的时候,希望BL[i,i]<-0
如果不用循环的话可以做吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-12-25 12:03:30
究竟是循环还是训话?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-12-25 13:09:58
> lm1 <- c(0, 2, 0, 5, 2, 1)
> w <- 1:6
> BL<-diag(w/abs(lm1))
> BL
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]  Inf    0    0  0.0  0.0    0
[2,]    0    1    0  0.0  0.0    0
[3,]    0    0  Inf  0.0  0.0    0
[4,]    0    0    0  0.8  0.0    0
[5,]    0    0    0  0.0  2.5    0
[6,]    0    0    0  0.0  0.0    6
> BL[BL == Inf] <- 0
> BL
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    0    0    0  0.0  0.0    0
[2,]    0    1    0  0.0  0.0    0
[3,]    0    0    0  0.0  0.0    0
[4,]    0    0    0  0.8  0.0    0
[5,]    0    0    0  0.0  2.5    0
[6,]    0    0    0  0.0  0.0    6
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-12-25 14:48:37
qoiqpwqr 发表于 2012-12-25 13:09
> lm1  w  BL BL
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]  Inf    0    0  0.0  0.0    0
感谢版主的热心解答,可以了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-12-26 00:27:00
lm1 <- c(0,2,0,5,2,1)
w <- 1:6
bl <- diag(ifelse(lm1!=0,w/abs(lm1),0))

也可以这样试试
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-12-26 22:40:40
qoiqpwqr 发表于 2012-12-25 13:09
> lm1  w  BL BL
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]  Inf    0    0  0.0  0.0    0
学习了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群