我有一個具有給定 Z 值的固定位置的 XY 坐標串列,我想有效地填充到 XY 網格中。
示例代碼:
x = c(1,1,1,2,2,3,4,5)
y = c(1,2,3,2,4,3,5,5)
z = rep(10,8)
grid = matrix(NA, nrow = max(x), ncol = max(y))
#fill the grid for given combinations of X and Y with Z values
for(i in 1:length(x)){
grid[x[i],y[i]] = z[i]
}
[,1] [,2] [,3] [,4] [,5]
[1,] 10 10 10 NA NA
[2,] NA 10 NA 10 NA
[3,] NA NA 10 NA NA
[4,] NA NA NA NA 10
[5,] NA NA NA NA 10
有沒有更有效的方法來填充網格而不是使用 for 回圈?
我試過grid[x,y] = z了,但沒有用。
uj5u.com熱心網友回復:
您可以使用以下代碼創建一個帶有坐標的資料框,以使用該坐標將這些值分配給您的矩陣:
x = c(1,1,1,2,2,3,4,5)
y = c(1,2,3,2,2,3,5,5)
z = rep(10,8)
# Create dataframe of coordinates
df <- data.frame(x = x, y = y)
# Convert to matrix
df.mat <- as.matrix(df)
grid = matrix(NA, nrow = max(x), ncol = max(y))
grid[df.mat] <- z
grid
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 10 10 10 NA NA
#> [2,] NA 10 NA NA NA
#> [3,] NA NA 10 NA NA
#> [4,] NA NA NA NA 10
#> [5,] NA NA NA NA 10
使用reprex v2.0.2創建于 2022-10-19
uj5u.com熱心網友回復:
看看它的美麗mapply
mapply(function(x, y, z) { grid[x, y] <<- z }, x, y, z)
grid
[,1] [,2] [,3] [,4] [,5]
[1,] 10 10 10 NA NA
[2,] NA 10 NA NA NA
[3,] NA NA 10 NA NA
[4,] NA NA NA NA 10
[5,] NA NA NA NA 10
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/519866.html
標籤:r表现
下一篇:關于隨機訪問陣列修改的任何優化?
