gpt4 book ai didi

R:具有 0 和 NA 的矩阵的倍数,从而产生不同的结果

转载 作者:行者123 更新时间:2023-12-02 17:23:44 26 4
gpt4 key购买 nike

我想将 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

想法?谢谢

最佳答案

我不会直接用 0 覆盖 mat0 中的值,而是创建一个临时对象,或者更简单,使用以下代码行

df0*`[<-`(mat0,df0==0,0)
# a b c d e
#1 NA 0 NA 20 0

功能

`[<-`(a,b,c)

返回a[b]=c,但实际上并没有改变a本身。

编辑:根据OP的请求(参见下面的评论),这里有更多代码。

我假设A[[y]]x分别对应于df0mat0。如果是这样,请尝试

Map(function(x,y) A[[y]]*`[<-`(x,A[[y]]==0,0),B,sub('\\..*','',names(B)))

关于R:具有 0 和 NA 的矩阵的倍数,从而产生不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34087072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com