имам 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