我有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 :(得分:0)
哦,我明白了。这是显而易见的。只需在操作后添加额外的列。
b$Z<-data$Z
c$Z<-data$Z
d$Z<-data$Z