我在使用嵌套for循环时遇到了一些麻烦。如果我在没有嵌套for循环的情况下运行代码,我会得到我想要的结果。我需要它在巢内发生,但我现在得到一个错误说明:
" data.frame(...,check.names = FALSE)出错:参数意味着行数不同:0,1"
虽然,当我在for-loop之外运行它时,我不会这样做。关于如何继续作为嵌套循环运行,您有什么建议吗?
以下是样本数据
$(function() {
var imagesPreview = function(input, placeToInsertImagePreview) {
if (input.files) {
console.log(input.files);
var filesAmount = input.files.length;
for (i = 0; i < filesAmount; i++) {
var reader = new FileReader();
reader.onload = function(event) {
$($.parseHTML('<img>')).attr('src', event.target.result).appendTo(placeToInsertImagePreview);
}
reader.readAsDataURL(input.files[i]);
}
}
};
$('#file-upload').on('change', function() {
imagesPreview(this, 'div.gallery');
});
});
这给了我错误。我猜测它是因为k和l的长度不同,但是如果我在for循环之外运行最后一部分(作为一个单独的部分 - 见下文)它可以工作。
Route Year ID Amount
1 1 A 5
1 2 A 2
1 3 A 7
1 4 A 1
1 1 B 5
1 2 B 11
1 3 B 0
1 4 B 2
ID_list<- unique(data$ID)
for(i in 1:length(ID_list)){
ID <- data[which(data$ID== ID_list[i]), ]
route_list <- unique(ID$Route)
for(j in 1:length(route_list)){
SP_R <- ID[which(ID$Route == route_list[j]), ]
for(k in 1:(nrow(SP_R)-1)){
for(l in (k+1):nrow(SP_R)){
new_data<- rbind(new_data,cbind(SP_R[k,],SP_R[l,]))
}}}}
我不知道为什么会这样。感谢您的意见!
答案 0 :(得分:0)
您必须在for循环之外定义new_data
,如下所示:
new_data<-NULL
之后这将是你的输出:
for(i in 1:length(ID_list)){
ID <- data[which(data$ID== ID_list[i]), ]
route_list <- unique(ID$Route)
for(j in 1:length(route_list)){
SP_R <- ID[which(ID$Route == route_list[j]), ]
for(k in 1:(nrow(SP_R)-1)){
for(l in (k+1):nrow(SP_R)){
new_data<- rbind(new_data,cbind(SP_R[k,],SP_R[l,]))
}}}}
new_data
Route Year ID Amount Route Year ID Amount
1 1 1 A 5 1 2 A 2
2 1 1 A 5 1 3 A 7
3 1 1 A 5 1 4 A 1
21 1 2 A 2 1 3 A 7
22 1 2 A 2 1 4 A 1
31 1 3 A 7 1 4 A 1
5 1 1 B 5 1 2 B 11
51 1 1 B 5 1 3 B 0
52 1 1 B 5 1 4 B 2
6 1 2 B 11 1 3 B 0
61 1 2 B 11 1 4 B 2
7 1 3 B 0 1 4 B 2