在spatial for循环中使用if-else语句发出
我正在做一个项目,计算在地址列表150米或500米范围内发生的某种类型的犯罪数量。虽然我能够在没有for循环的情况下成功地实现这一点,但由于我需要使用不同的犯罪定义,这有点麻烦,因此我尝试将过程缩短一点 有三个数据集,都是sf对象。第一个是在spatial for循环中使用if-else语句发出,r,for-loop,spatial,sf,R,For Loop,Spatial,Sf,我正在做一个项目,计算在地址列表150米或500米范围内发生的某种类型的犯罪数量。虽然我能够在没有for循环的情况下成功地实现这一点,但由于我需要使用不同的犯罪定义,这有点麻烦,因此我尝试将过程缩短一点 有三个数据集,都是sf对象。第一个是data\u sf一个带有点的sf对象,一个ID变量,以及year,一个指定使用哪个犯罪数据集的变量。第二个sf对象,crime1516和crime1617是2015-2016年以及2016-2017年的犯罪。我的一般方法是使用for循环遍历每一行 为i行创建
data\u sf
一个带有点的sf对象,一个ID变量,以及year
,一个指定使用哪个犯罪数据集的变量。第二个sf对象,crime1516
和crime1617
是2015-2016年以及2016-2017年的犯罪。我的一般方法是使用for循环遍历每一行
year==1
,计算i bbox的crime1516
交叉口数量
B否则,如果year==1
计算与crime1617
data_sf$vc150m <- for (i in 1){
bbox150m <- st_buffer(data_sf[i,]$geometry, dist = 150)
if (data_sf[i, "year"] == "1"){
vc150m <- st_intersection(x = bbox150m, y = crime1516_v)
data_sf[i,]$vc150m <- vc150m %>%
group_by()
count()
} else if(data_sf[i,]$year == 2){
vc150m <- st_intersection(x = bbox150m, y = crime1617_v)
data_sf[i,]$vc150m <- vc150m %>%
group_by() %>%
count()
} else {
data_sf[i,]$vc150m <- NULL
}
}
根据语言,我猜这与
if
语句有关,但我不能确切地找出它的原因。在这个问题上,我没有发现任何有用的东西,也没有发现它的真正含义。对此的任何帮助,或for循环/函数的任何其他错误,都将不胜感激 你能提供一些样本数据以便我们重现你的错误吗?请参阅指南。能否提供一些示例数据,以便我们重现您的错误?请参阅以获取指导
countcrimes <- function(d, output){
output <- data.frame(data_sf$ID, data_sf$year, data_sf$geometry)
for (i in 1:dim(data_sf)[1]){
bbox150m <- st_buffer(data_sf[i,"geometry"], dist = d)
if (data_sf[i,"year"] == "1"){
vc150m <- st_intersection(x = bbox150m, y = crime1516_v)
output[i,] <- vc150m %>%
group_by()
count()
} else if(data_sf[i,]$year == "2"){
vc150m <- st_intersection(x = bbox150m, y = crime1617_v)
output[i,] <- vc150m %>%
group_by() %>%
count()
}
}
return(output)
}
data_sf$vc150m <- countcrimes(150, vc150m)
Error in matrix(if (is.null(value)) logical() else value, nrow = nr, dimnames = list(rn, :
length of 'dimnames' [2] not equal to array extent