我試圖將點值轉換爲使用sp程序包進行座標以執行類似於this question的操作。我有一個數據框的列表(全數據集中有數百個,這裏有兩個短數據)。轉換爲數據幀列表上的座標
> dput(df)
list(structure(list(group = c(22, 43, 43, 36, 9, 20, 35, 18,
32, 2), mean_x_m = c(-2578373.61904762, -2082265, -1853701.875,
-2615961.89189189, -1538829.07815509, -1753235.6200847, -1690679.5,
-1694763.64583333, -1700343.15217391, -1416060), mean_y_m = c(3242738.76190476,
2563892.5, 1945883.125, 3130074.86486486, 1373724.65001039, 1468737.97186933,
2123413.5, 1442167.01388889, 2144261.73913043, 1352573.33333333
)), .Names = c("group", "mean_x_m", "mean_y_m"), row.names = c(72L,
140L, 142L, 121L, 27L, 66L, 114L, 60L, 105L, 5L), class = "data.frame"),
structure(list(group = c(12, 12, 47, 30, 39, 34, 47, 22,
10, 1), mean_x_m = c(-1830635.68663753, -2891058.33333333,
-1637448.59886202, -1974773.67400716, -1571853.24324324,
-2723090.33333333, -2704594.92760618, -2240863.49122807,
-1940748.88253242, -2176724.69924812), mean_y_m = c(2324222.49926225,
3261997.5, 2057096.55049787, 2411733.29933653, 1447883.78378379,
3406879.26666667, 3291053.77606178, 2788255.49473684, 2176919.6882151,
2920168.77443609)), .Names = c("group", "mean_x_m", "mean_y_m"
), row.names = c(67L, 68L, 243L, 155L, 202L, 173L, 244L,
114L, 61L, 3L), class = "data.frame"))
我可以一次拉出一個數據幀並將其轉換爲SpatialPointsDataFrame而沒有問題。
df1 = df[[1]]
coordinates(df1) = ~mean_x_m+mean_y_m
我的問題是我不能得到這個迭代使用功能的完整列表,甚至得到的功能單個數據幀的工作。
c = function(f){coordinates(f) = ~mean_x_m+mean_y_m}
df2 = c(df1)
c(df1)
df3 = lapply(df,c)
for循環會更好嗎?我仍然在學習如何使用數據框和矩陣列表,所以在這方面的任何幫助或在這方面將不勝感激。謝謝。
感謝。如果我可以爲每個原始數據框添加一個具有唯一標識符的列,然後我可以稍後進行聚合/排序/拆分,那麼這可能會起作用。有關使用dplyr在您提供的相同代碼中執行此操作的任何快速提示? – tjr
它應該已經存在,位於名爲「list_number」的列中。您可以根據需要更改名稱。 – bramtayl