Я недавно наткнулся на setValues()
форму raster
, но мне интересно, какой вариант использования этой функции. Существует ли какое-либо преимущество по сравнению с обычным подмножеством и индексированием:Использовать случай setValues растровый
r <- raster(ncol=10, nrow=10)
#setValues Function
r <- setValues(r, values=1, index=10)
#Normal indexing
r[10] <- 1
Оба выхода дают тот же результат. Однако в документации говорится, что:
В то время как вы можете получить доступ к слот «значения» объектов напрямую, вы бы сделать это на свой страх и риск, потому что при установке значения, несколько слотов должны быть изменены; что и делают эти функции.
Что означает автор в опасности? И какие слоты остаются неизменными, когда я использую обычное подмножество, а не функцию setValues или есть ли какие-либо преимущества с точки зрения производительности?
Когда автор предупреждает против прямого изменения В слове «значения» они говорят о том, чтобы не делать что-то вроде этого: «r <- растр (матрица (1: 9, nc = 3)); r @ data @ values <- 100 * (1: 9) '. Если вы обезьяны вокруг этого, непосредственно изменяя структуру данных низкого уровня, вы обходите много приятных вещей, которые сделаны для вас, если вы не будете непосредственно знать об этом. Попробуйте (например) запустить 'minValue (r)' до и после этого прямого назначения в слот данных 'values', чтобы понять, что я имею в виду. И затем сделайте 'getMethod (" setValues "," RasterLayer ")' для более подробного просмотра того, что 'setValues' делает для вас. –
Осторожно: вторая и третья строки кода в вашем блоке кода фактически не делают то же самое. –