настройка количества строк для каждого элемента в списке - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть код, который читает определенные файлы и извлекает указанные данные для дальнейшей обработки.Пример кода представлен ниже:

library(readxl)
library(openxlsx)

revisedFiles<-choose.files()
dataList<-list()
length(dataList)<-3
## 'For' loop to select only relevant data

for( i in 1:length(revisedFiles)){
#Reading files
dummy<-read_excel(revisedFiles[i],sheet="DataSheet",range=cell_cols("F:I"))
dummy2<-read_excel(revisedFiles[i],sheet="DataSheet",range=cell_cols("D:D"))
#Attempt to check if number of rows are the same and work around it
if(nrow(dummy)<nrow(dummy2)){
diff<-abs(nrow(dummy)-nrow(dummy2))  
dummy[nrow(dummy)+diff,]<-c(rep("NA",length(diff)))
} else if(nrow(dummy)>nrow(dummy2)){
diff<-abs(nrow(dummy)-nrow(dummy2))  
dummy2[nrow(dummy2)+diff,]<-c(rep("NA",length(diff)))
}


# Separating data into 3 categories
nData<-cbind(dummy2,dummy[1])
sData<-cbind(dummy2,dummy[2])
bData<-cbind(dummy2,dummy[3])
#Adding each category to the separate level in the list
dataList[[1]]<-append(dataList[[1]],list(nData))
dataList[[2]]<-append(dataList[[2]],list(sData))
dataList[[3]]<-append(dataList[[3]],list(bData))
}

Проблема в том, что у меня есть следующая ошибка:

Ошибка в data.frame (..., check.names = FALSE): аргументы подразумевают различное количество строк: 231, 232

Ранее каждый предлагал сделать все элементы одинаковой длины (найдя самый большой элемент и сделав все элементы одинакового размера).

Благодаря Андре в комментариях я добавил функцию «если», которая, кажется, обходит ошибку.Тем не менее, каждый уровень списка имеет более 7000 списков, когда я ожидаю только 26 (потому что у меня есть 26 файлов, которые я читаю в первую очередь).

Примером будет:

Предположим, ясохранить эти 3 таблицы в 3 различных с / с:

 Table 1                 Table 2                Table 3
 Name1  1   11  111      Name1   4   44  444    Name1  7   77  777  
 Name2  2   22  222      Name2   5   55  555    Name2  8   88  888
 Name3  3   33  333      Name3   6   66  666    Name3  9   99  999

Я хочу иметь список, который имеет 3 уровня (1-й уровень для 1-значных чисел, 2-й уровень для 2-значных и 3-й уровень для 3-значных)номера).На каждом уровне я хочу сохранить значения из каждой таблицы отдельно.Выходные данные для этого примера будут такими:

[[1]]
[[1]][[1]]
1,2,3
[[1]][[2]]
4,5,6
[[1]][[3]]
7,8,9

То же самое для других уровней.Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...