1
假設我有以下sf
數據幀:從列表中SF更換幾何
library(sf)
nrows <- 10
geometry = st_sfc(lapply(1:nrows, function(x) st_geometrycollection()))
df <- st_sf(id = 1:nrows, geometry = geometry)
而且我也有以下列表:
mylist = list('2'=st_point(c(-73,42)), '3'=NA)
我想從第二替換幾何觀察與列表中的點。我曾想過做以下幾點:
st_geometry(df[names(mylist),]) <- st_sfc(mylist)
但是,這將引發一個錯誤:
"Error in vapply(lst, class, rep(NA_character_, 3)) : values must be length 3, but FUN(X[[2]]) result is length 1"
我發現了以下解決方法:首先消除NA值:
condition <- mylist[!is.na(mylist)]
st_geometry(df[names(condition),]) <- st_sfc(condition)
是否有更好的方法來做到這一點?我可以強制mylist
中的NA元素爲空嗎?
在這個例子中,列表只有一個NA;如果它有多個NA元素,我該怎麼做?在這種情況下,雙括號會引發錯誤。 – user21359
'na_rows < - which(is.na(mylist))'; 'for(na_rows中的行)st_geometry(df [row,])< - st_sfc(st_point())' – lbusett
太好了,謝謝! – user21359