将近似函数应用于 R 中的两个列表时出错

Error while applying approx function to two lists in R

我有两个列表,list1 和 list2,每个列表有 77103 个元素,每一行都是一个 1 行 100 列的数据框。我正在尝试使用 R 中的近似函数进行线性插值,但出现以下错误。

***`Error in Y[row, ] : incorrect number of dimensions`***

这是我正在尝试执行的操作的示例代码。


a1<- c(2.5, 7.8, 6.5, 9.2, 10.2)
a2<- c(1.1, 2.5, 3.9, 7.2, 11.2)
a3<- c(2.7, 5.8, 7.2, 12.2, 14.2)
a<- as.list(data.frame(a1,a2,a3))
b1<-c(0.1,2,3.3, 4.5, 6.7)
b2<-c(1.1,2.9,3.4,5.5,7.7)
b3<-c(0.7,2.1,3.8,4.4,5.5)
b<- as.list(data.frame(b1,b2,b3))
df<- mapply(function(X,Y) {
  sapply(1:3, function(row) approx(X[row,], Y[row,], xout=seq(0,4, by=1), method="linear"))
}, X=a, Y=b)

发生这种情况的原因可能是什么?请提出其他想法来绕过此错误。谢谢

您可以采用以下方法:

f <- Map(function(X,Y) {
  approx(X, Y, xout=seq(0,4, by=1), method="linear")$y # could use $x also
},a, b)

# convert to data frame
f <- data.table::transpose(as.data.frame(f))

 V1 V2       V3        V4       V5
1 NA NA       NA 0.5000000 1.300000
2 NA NA 2.257143 3.0785714 3.463636
3 NA NA       NA 0.8354839 1.287097