我有一个读取某些文件并提取指定数据以进行进一步处理的代码。代码示例如下所示:
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
以前,每个人都建议使所有元素具有相同的长度(通过找到最大的元素并使所有元素具有相同的大小)。
由于评论中的Andre,我添加了似乎绕过错误的'if'函数。但是,当我只希望26个列表时,每个列表级别都有7000多个列表(因为我一开始就读取了26个文件)。
示例为:
假设我将这3张表保存在3个不同的s / s中:
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位数,第二个级别为2位数,第三个级别为3位数)。在每个级别中,我都希望将每个表中的值都分开。此示例的输出为
[[1]]
[[1]][[1]]
1,2,3
[[1]][[2]]
4,5,6
[[1]][[3]]
7,8,9
与其他级别相同。 谢谢!