Ошибка при применении функции приближения к двум спискам в R - PullRequest
1 голос
/ 24 января 2020

У меня есть два списка 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)

В чем может быть причина этого? Пожалуйста, предложите альтернативные идеи, чтобы обойти эту ошибку. Спасибо

1 Ответ

1 голос
/ 25 января 2020

Вот способ, которым вы можете сделать:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...