将近似函数应用于 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
我有两个列表,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