我想将 df 与矩阵相乘。 df 具有 0 值,矩阵具有 NA 值(这一点很重要)。通过将 0(在 df 中)与一个值(在 mat 中)相乘,我得到 0,将一个值(在 df 中)与 NA(在 mat 中)相乘,我得到 NA,这对我来说是正确的并且完全没问题。然而,当我将 0 (df) 与 NA (mat) 相乘时,我得到 NA,这可能是正确的。但是有没有办法得到0呢?因为我对那些 0 感兴趣。这里有一些示例数据:
df0 <- data.frame(a=1, b=0, c=2, d=5, e=0)
mat0 <- matrix(c(NA,2,NA,4,NA),nrow=1, ncol=5)
df_mat0 <- df0 * mat0
我的预期结果(e 中的 0):
a b c d e
1 NA 0 NA 20 0
有想法吗?谢谢
I would not直接覆盖里面的值mat0
with 0
,而是创建一个临时对象,或者更简单,使用以下代码行
df0*`[<-`(mat0,df0==0,0)
# a b c d e
#1 NA 0 NA 20 0
功能
`[<-`(a,b,c)
returns a[b]=c
但实际上并没有改变a
itself.
编辑:根据OP的请求(参见下面的评论),这里有更多代码。
我假设A[[y]]
and x
相当于df0
and mat0
, 分别。如果是这样,请尝试
Map(function(x,y) A[[y]]*`[<-`(x,A[[y]]==0,0),B,sub('\\..*','',names(B)))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)