我正在大脑冻结。
这就是我所拥有的:
C <- c(C1, C2, C3) # A constant for every row in the data frame
r <- c(r1, r2, r3, r4) # A ratio for every column in the data frame
我的数据框如下所示:
1 2 3 4
a 0.7 0.4 NA NA
b NA NA 0.3 NA
c NA 0.6 NA 0.4
我需要用C和r的乘法填充NA,使它看起来像这样:
1 2 3 4
a 0.7 0.4 C1*r3 C1*r4
b C2*r1 C2*r2 0.3 C2*r4
c C3*r1 0.6 C3*r3 0.4
请注意,乘法仅针对NA进行,而不是针对已存在的数字进行。我知道is.na
用于挑选NA,它可能只是线性代数,但我的大脑已经退出了一天。任何帮助都会很棒。
感谢。
答案 0 :(得分:2)
如果mm是你的矩阵,你可以填写这样的缺失值:
mm[is.na(mm)] <- outer(C,r)[is.na(mm)]
mm <- read.table(text=' 1 2 3 4
a 0.7 0.4 NA NA
b NA NA 0.3 NA
c NA 0.6 NA 0.4')
C <- c(1, 1, 1) # A constant for every row in the data frame
r <- c(2, 2, 2, 2)
mm[is.na(mm)] <- outer(C,r)[is.na(mm)]
# X1 X2 X3 X4
# a 0.7 0.4 2.0 2.0
# b 2.0 2.0 0.3 2.0
# c 2.0 0.6 2.0 0.4