我有以下数据.表*:
dt <- data.table(
LEFT = letters[c(1:5, 10:12)],
SELF = letters[c(2:6, 11:13)],
RIGHT = letters[c(3:7, 12:14)]
)
dt <- dt[sample(nrow(dt)), ]
dt[]
# LEFT SELF RIGHT
# 1: e f g
# 2: d e f
# 3: j k l
# 4: c d e
# 5: l m n
# 6: b c d
# 7: a b c
# 8: k l m
Run Code Online (Sandbox Code Playgroud)
LEFT 和 RIGHT 表示 SELF 的邻居。我想对表进行索引,以便对相邻的邻居进行分组和排序。理想的输出可能如下所示:
dt_out[]
# LEFT SELF RIGHT RUN ORDER
# …Run Code Online (Sandbox Code Playgroud) 子集矩阵或DF时,可以引用行列,例如df1[1:5, 3:10]或df3[2:4, ]。
有什么办法可以使用栅格吗?也就是说,我是否可以仅裁剪500:700行,例如从栅格对象中裁剪?
我尝试使用rasterFromCells(),但是它没有给我想要的结果(并且考虑到R的其他巧妙的子设置方法,似乎应该有一个更简单的解决方案)。
例:
r <- raster(ncols = 50, nrow = 50)
r[] <- 1:ncell(r)
# I would like to subset the bottom 50 rows of cells, but keep it as a raster.
# However, this returns a numeric object.
rSub <- r[30:50, 1:50]
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在尝试使用 raster::adjacent() 创建一个 rooks case 邻接矩阵,但我无法理解输出。
可重现的例子:
library(raster)
r <- raster(nrow = 3, ncol = 3)
rAdjacent <- raster::adjacent(r, cells = 1:ncell(r), pairs = TRUE, directions = 4)
rAdjacent
from to
[1,] 1 3
[2,] 2 1
[3,] 3 2
[4,] 4 6
...
Run Code Online (Sandbox Code Playgroud)
从我对输出的解释来看,输出表明 1 和 3 具有 rooks 大小写关系(如果我正确理解了这种关系,则它们没有)。
问题 1. 这是正确的吗?我是否正确解释了这个输出?
问题 2. 我如何使用 next() 或其他方法创建输出,它可以为我提供相邻的单元格编号对?
谢谢 :)