Создание трехмерного массива файлов Excel в R - PullRequest
0 голосов
/ 05 марта 2020

У меня есть следующий MWE, хотя наборы данных недоступны:

N <- 84 #Number of datasets to pull data from
dates <-  c("2010.01", "2010.02", "2010.03", "2010.04", "2010.05", "2010.06", "2010.07", "2010.08",
 "2010.09", "2010.10", "2010.11", "2010.12", "2011.01", "2011.02", "2011.03", "2011.04", "2011.05",
 "2011.06", "2011.07", "2011.08", "2011.09", "2011.10", "2011.11", "2011.12", "2012.01", "2012.02",
 "2012.03", "2012.04", "2012.05", "2012.06", "2012.07", "2012.08", "2012.09", "2012.10", "2012.11",
 "2012.12", "2013.01", "2013.02", "2013.03", "2013.04", "2013.05", "2013.06", "2013.07", "2013.08",
 "2013.09", "2013.10", "2013.11", "2013.12", "2014.01", "2014.02", "2014.03", "2014.04", "2014.05",
 "2014.06", "2014.07", "2014.08", "2014.09", "2014.10", "2014.11", "2014.12", "2015.01", "2015.02", 
 "2015.03", "2015.04", "2015.05", "2015.06", "2015.07", "2015.08", "2015.09", "2015.10", "2015.11", 
 "2015.12", "2016.01", "2016.02", "2016.03", "2016.04", "2016.05", "2016.06", "2016.07", "2016.08",
 "2016.09", "2016.10", "2016.11", "2016.12") #list of all dates to loop through

A <- list() #empty list to store excel files
for (k in seq_along(dates)) {
  A[k] <- read_excel(paste0("~/R/data.", dates[k], ".xlsx"), range = "B3:EO94")
}
Total <- array(unlist(A), dim=c(91,144,84))

First <- read_excel(paste0("~R/data.", dates[1], ".xlsx"), range="B3:EO94")

Это дает мне Total 3-мерный массив и затем First, который должен быть первым "срезом" массив. Поэтому, если я возьму произвольную координату, скажем, 15,34, тогда я смогу получить точное некоторое значение из Total и First, поэтому я попробую следующее:

> Total[15,34,1]
[1] 0.000392432

> A1[15,34]
# A tibble: 1 x 1
   `-97.5`
     <dbl>
1 0.000384

0,000384 это правильный номер, найденный в файле Excel от AI18, а номер, указанный в Total, неверен. Что дает? Для дальнейшей двойной проверки я сравнил Total[15,34,2] со вторым «срезом» и, увы, тот же неверный результат из Total.

1 Ответ

1 голос
/ 05 марта 2020

Попробуйте использовать двойные квадратные скобки, A[[k]] для назначения данных из файлов Excel.

A <- list() #empty list to store excel files

for (k in seq_along(dates)) {
  A[[k]] <- read_excel(paste0("~/R/data.", dates[k], ".xlsx"), range = "B3:EO94")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...