调整列表中每个元素的行数

时间:2018-11-19 12:04:16

标签: r

我有一个读取某些文件并提取指定数据以进行进一步处理的代码。代码示例如下所示:

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

与其他级别相同。 谢谢!

0 个答案:

没有答案