У меня есть код, который читает определенные файлы и извлекает указанные данные для дальнейшей обработки.Пример кода представлен ниже:
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
То же самое для других уровней.Спасибо!