나는 sf
개체로 작업하고 있으며 데이터 프레임에 사용자 정의 함수를 적용하는 방법에 대한 질문이 있습니다. 이것은 어리석은 예이지만, 더 복잡한 문제로 내가하려고하는 것과 유사합니다. names
이라는 데이터 프레임이 있으며 두 개의 열이 있으며 각각은 카운티 이름이 있습니다. 또한 sf
패키지에 포함 된 노스 캐롤라이나 데이터를 읽었습니다.문자를 사용하여 적용
require(sf)
name_1 <- c('Ashe','Alleghany','Surry')
name_2 <- c('Currituck','Northampton','Hertford')
names <- data.frame(cbind(name_1,name_2))
nc <- st_read(system.file("shape/nc.shp", package="sf"))
난 할 노력하고있어 것은 내 데이터 프레임 names
의 각 행 아래로 이동하는 함수를 만드는 것입니다은 NAME_1 컬럼과 NAME_2 열 중 이름에서 이름을 소요하고있는 경우보고 그들이 기하학적 데이터를 nc
에 사용하여 교차하십시오. 나는 가지고있다 :
check_intersection <- function(x){
return(st_intersects(nc[nc$NAME== x$name_1,],nc[nc$NAME==x$name_2,],sparse = FALSE))
}
apply(names,1,check_intersection)
그러나 이것은 Error in x$name_1 : $ operator is invalid for atomic vectors
의 과실을 일으킨다. names
의 각 행에 대해 해당 열에서 문자 값을 가져 오는 함수를 어떻게 말합니까?
각 벡터별로 sf 객체의 하위 집합을 만들 수 없으며 두 객체에서 st_intersects 또는 st_intersection을 실행할 수 있습니까? 왜 당신이 같은 df에서 그들을 필요로하는지 이해하지 못한다. – elmuertefurioso
try :'check_intersection <- function (x) { return (st_intersects (nc $ NAME == x [1],], nc [nc $ NAME == x [ 2],], sparse = FALSE)) } – missuse
벡터에 '$'연산자를 사용할 수 없습니다. x $ name_1과 그 외의 것들을 x [, 1]과 x $ name_2와 x [, 2]로 대체하십시오. – csgroen