/ / Въртящите се пространствени координати пропускат други данни - r, въртене, пространствени

Ротационните пространствени координати пропускат други данни - r, ротация, пространствено

имам data.frameна пространствени данни (X, Y) с трета колона отатрибутни данни (Z), присвоени на всяка пространствена координата. Трябва да мога да манипулирам пространствените координати, като ги завъртя около централна точка и след това да ги анализирам с прикрепен атрибут. Успях да завъртя координатите, но не мога да пренеса третата колона с данни през процеса на ротация. т.е. трябва да премахна третата колона с данни от data.frame за извършване на пространствената манипулация.

Ето примерните данни

И ето кода, който имам досега

data<-read.csv("Sample.csv",head=T)
head(data)

#Omit the attribute data

a<-data[-3]

angle <- pi/8
M <- matrix( c(cos(angle), -sin(angle), sin(angle), cos(angle)), 2, 2 )

# FIRST ROTATION
b<-as.matrix(a) %*% M
colnames(b)<-c("X","Y")
b<-as.data.frame(b)

# SECOND ROTATION
c<-as.matrix(b) %*% M
colnames(c)<-c("X","Y")
c<-as.data.frame(c)

# THIRD ROTATION
d<-as.matrix(c) %*% M
colnames(d)<-c("X","Y")
d<-as.data.frame(d)

par(mfrow=c(2,2))
par(mar=c(2,2,2,2))

plot(a,col="red",pch=19,asp=1)
plot(b,col="blue",pch=19,asp=1)
plot(c,col="green",pch=19,asp=1)
plot(d,col="purple",pch=19,asp=1)

Това, което трябва да мога да направя, е да манипулирам пространствените данни по начина, по който го направих по-горе, но също така да пренасям оригиналния атрибут, присвоен на всяка координатна точка (Z).

Опитах

M <- matrix( c(cos(angle), -sin(angle), sin(angle), cos(angle),1,1), 2,3 )
b<-as.matrix(data) %*% M

но получавате следната грешка

Error in as.matrix(a) %*% M : non-conformable arguments

Забих се. Може ли някой да помогне ??

Отговори:

0 за отговор № 1

О, разбрах. Беше толкова очевидно. Просто добавете допълнителната колона след манипулацията.

b$Z<-data$Z
c$Z<-data$Z
d$Z<-data$Z