我正在尝试对数据帧中的所有行进行插值。我正在使用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
因为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