我試圖創建一個新的數據集,從ds2中刪除一些行(通過與數據集ds1的比較)。我寫了一個函數,應該這樣做:向R中的數據集追加行
compare<-function(ds1,ds2){
for(i in 1:length(ds1$long)){
for(j in 1:length(ds2$long)){
if(ds1$long[i]<(ds2$long[j]+500) & ds1$long[i]>(ds2$long[j]-500)){
if(ds1$lat[i]<(ds2$lat[j]+500) & ds1$lat[i]>(ds2$lat[j]-500)){
ds3<-data.frame(merge(ds2[j,],ds3))
}
}
}
}
return(ds3)
}
DS3是我想要返回的數據集,它應該由原始數據集DS2的符合上述條件的行形成。 我的功能給我一個錯誤:
Error in as.data.frame(y) :
argument "y" is not specified and has not a definite value
是「合併()」的權利建立這樣一個數據集,追加行DS3功能? 如果不是,哪個是正確的功能呢?
謝謝大家提前
編輯:我修改了功能,感謝您的提示,使用
ds3<-data.frame()
ds3<-rbind(ds3,ds2[j,])
,而不是
ds3<-data.frame(merge(ds2[j,],ds3))
現在我得到這個錯誤:
Errore in rbind(ds3, ds2[j, ]) :
no method for coercing this S4 class to a vector
如果我使用rbind(),我可以使用SpatialPoints嗎? (包含在我的數據集中的數據是空間點)
Edit2:我有2個數據集,一個有330行(不規則網格上的點,ds1),一個有150000行(常規網格上的點,ds2)。我想計算第一個數據集中的變量與第二個數據集中的變量之間的相關性。爲了做到這一點,我想將第二個數據集「縮小」到第一個數據集的維度,只保存兩個數據集中具有相同座標(或準)的點。
嘗試使用'rbind'而不是'merge' – LyzandeR 2014-12-27 15:05:05
初始化'ds3'並使用'rbind'。 – Khashaa 2014-12-27 15:05:36
第1步:子集ds1用'['by conditions第2步'rbind'不應該有它的外觀所需的任何循環。請用數據示例和期望的結果澄清問題 – 2014-12-27 16:59:42