如何将na.approx应用于矩阵中的一行?

问题描述 投票:0回答:1

我正在尝试对数据帧中的所有行进行插值。我正在使用apply(data_final,2,na.approx)。这会对值进行插值,但有些值超出范围。

如果我改用na.approx(data_final[8,]),那么与使用apply的行相比,我在该行获得的值不同。

此外,如果我做na.approx(data_final)我得到与apply(data_final,2,na.approx)相同的结果。它没有任何意义,因为据说应用是将na.approx函数应用于数据框中的每一行。

apply(data_final,2,na.approx)[8,] 0.63 0.49 2.40 2.65 3.65 5.80 0.96 1.85 1.43 1.25 1.21 1.20 0.91 1.00 0.96 0.80 1.42 1.82 1.910

na.approx(data_final [8,])[1] 0.630 0.490 0.584 0.678 0.772 0.866 0.960 1.850 1.430 1.250 1.210 1.200 0.910 1.000 0.960 0.800 1.420 1.820 1.910 1.780 1.620 [22] 1.650 1.380 1.370

r interpolation na.approx
1个回答
0
投票

因为na.approx进行了列式计算而不是行式计算。根据?na.approx(来自zoo),用法是

na.approx(对象,...)

并且参数描述是

如果obj有多个列,则上述策略将应用于每列。


使用可重现的例子

library(zoo)
df1 <- data.frame(col1 = c(2, NA, 3, 4), col2 = c(1, 3, NA, 2))
na.approx(df1)
#     col1 col2
#[1,]  2.0  1.0
#[2,]  2.5  3.0
#[3,]  3.0  2.5
#[4,]  4.0  2.0

按列应用na.approx

sapply(df1, na.approx)
#     col1 col2
#[1,]  2.0  1.0
#[2,]  2.5  3.0
#[3,]  3.0  2.5
#[4,]  4.0  2.0
© www.soinside.com 2019 - 2024. All rights reserved.