2
逐年ATAN2函數我有創建的人造數據集:迴路的中的R
x<-rnorm(100,10,10)
y<-rnorm(100,20,10)
Location<-c((rep("AB", 40)),(rep("TA", 30)),(rep("OP", 30)))
Year<-c((rep("1999", 10)),(rep("2000", 9)),(rep("2001", 12)),(rep("2002", 9)),(rep("1999", 7)),(rep("2000", 6)),(rep("2001", 6)),(rep("2002", 11)),(rep("1999", 12)),(rep("2000", 8)),(rep("2001", 5)),(rep("2002", 5)))
Data<-cbind(x,y,Location,Year)
> head(Data)
x y Location Year
[1,] "1.8938661556415" "19.851256070398" "AB" "1999"
[2,] "21.0735971323312" "17.4993965352294" "AB" "1999"
[3,] "30.8347289164302" "7.63333686308105" "AB" "1999"
[4,] "8.913993138201" "14.7085296541221" "AB" "1999"
[5,] "20.8309225677419" "12.0888505284667" "AB" "1999"
[6,] "25.3978549194374" "20.47154776064" "AB" "1999"
我想利用各個x和這樣ÿ爲一體的arc2tan:
Theta<-atan2(y[i+1]-y[i],x[i+1]-x[i])
但我只希望在年內每年都能這樣做,這意味着我不想在1999年到2000年之間或2001年到2002年之間找到theta,只有在同一年的同一年的x和y點之間。
我原本寫了一個循環,做了上面的(我不想做的),我想知道是否有人知道如何改變它,這樣循環就會停止並重置每一年。原始迴路如下:
for (i in 1:length(x)-1){
Theta[i]<-atan2(y[i+1]-y[i],x[i+1]-x[i])
}
任何幫助?
太棒了!我非常感謝你的幫助。不幸的是,我不能使用第二個建議,因爲我嘗試加載包'dplyr'時出錯。你有建議如何將第一個建議的結果變成向量或列表形式嗎? – KL2014
很高興聽到您發現我的答案有用。加載'dplyr'時出現了哪個錯誤?我假設你已經安裝了它......;)'by'的輸出是一個'list'(在R術語中)。您可以使用'unlist'將其簡化爲一個向量。 – Henrik
哈哈哈,我知道我是一名業餘R用戶,但我知道我需要先安裝它。嘗試安裝時出現錯誤。有錯誤說明:警告消息: 在utils ::: getDependencies(pkgs,available = avail): 包'dplyr'不可用(對於R版本2.14.1)。 – KL2014