У меня есть матрица, содержащая положение (X, Y, высота). Я добавляю столбец в матрицу, которую я называю «индексом». Я создаю вектор X и Y из матрицы. Оба они включают индексный столбец. Затем я сортирую по возрастанию значение вектора X и Y, который я только что сделал. Затем я создаю матрицу Z, содержащую высоту, и я отношу ее к позиции с использованием индекса. Затем я пытаюсь использовать контур команды (я хочу построить контурный график), и я получаю ошибку, говоря, что X и Y должны быть в порядке возрастания ... которые я только что сделал !!! Что я сделал не так?Контур - Участок - по возрастанию
noeud<-read.table("position.out")
Matrice_Noeud<-matrix(ncol = ncol(noeud), nrow=nrow(noeud))
for (i in 1:nrow(noeud)) {
for (j in 1:ncol(noeud)) {
Matrice_Noeud[i,j]<-noeud[i,j]
}
}
Matrice_Noeud <- cbind(Matrice_Noeud, c(seq(1,nrow(noeud),1)))
x<-data.frame(x=Matrice_Noeud[,1],Index=Matrice_Noeud[,4])
y<-data.frame(y=Matrice_Noeud[,2],Index=Matrice_Noeud[,4])
X<-x[order(x$x),]
Y<-y[order(y$y),]
Z<-matrix(NA, ncol=nrow(noeud),nrow=nrow(noeud))
for (x_i in 1:nrow(noeud)) {
for (y_i in 1:nrow(noeud)) {
if (Y$Index[y_i]==X$Index[x_i]) {
niveau<-which(Matrice_Noeud[,4]==Y$Index[y_i])
Z[x_i,y_i]<-Matrice_Noeud[niveau,3]
}
}
}
Xx<-array(X[,1])
Yy<-array(Y[,1])
Zz<-data.frame(Z)
contour(Xx,Yy,Zz)
'Длина (уникальный (noeud [1])) * длина (уникальный (noeud [2]))' '= nrow (noeud)' ?? Если нет, contour() не может обрабатывать данные. – cuttlefish44
Нет, это не так. длина (уникальная (noeud [, 1]) = 19; длина (уникальная (noeud [, 2]) = 12 nrow (noeud) = 121 – John
Я не совсем понимаю, почему они должны быть равными? матрицу Z таким образом, что она эквивалентна сетке с X и Y, а соответствующие значения Z относятся к их исходному позиционированию ... Я смущен. Не хотите ли мне объяснить? (извините, если вопрос – John