2013-10-14 1 views
3

내 작업 공간으로 SpatialPolygonsDataFrames의 시리즈를로드 한으로 객체. 명명 된 객체의 각각은, 국가의 준말에 부착 "_adm1", 또는 "_adm2"을 가지고 하나 "_adm0". 독일의 경우 "DEU_adm0", "DEU_adm1""DEU_adm2"과 같이 표시됩니다. 그룹 R은 목록

나는 다음 ldply에 의해 운영되고 강화 될 수있는 목록에 "_adm0"데이터 프레임을 모두 수집하기 위해 노력하고있어. 나는 함께 내가 원하는 국가를 모두 써

mylist <- list(DEU_adm0, FRA_adm0, RUS_adm0, etc...) 목록에 포함시킬 것을 할 수 있습니다.

그러나 패턴을 통해 "_adm0" 개의 데이터 프레임을 모두 얻으려면 어떻게해야합니까?

나는 아래의 코드로 시작했지만

adm0list <- ls()[str_detect(ls(), "_adm0")] 

mylist <- sapply(adm0list, function(x) get(x)) 

또는 대안 적으로,

mylist <- mget(adm0list, .GlobalEnv) 

내가 가진 개체의 목록을받을 수 있나요을 쓰기로 나에게 원하는 결과를 제공하지 않습니다 mget()를 사용하지만,이 목록은 직접 개체 이름을 가진 list()를 사용하는 것보다 다른 이유가 보이지 않아요 sapply 방법합니다. 나는 그 질문에 대한 대답은 나에게 말할 것이다 의심 왜 list() 방법이 아닌 다른 두와 ldply + fortify 작품.

+3

'ls'는 패턴 인수를 가지고 ... 당신의 SPDF 객체의 data.frame 부분의 @ 추출기를 사용하여 다음 lspattern 인수를 사용하고 있습니다. – joran

+0

Joran, 처음에 당신을 이해하지 못했지만, 아래의 Simon의 대답처럼 해결했습니다. –

+0

아, 좋아요, 그래서 참여에 매달려 있어요. –

답변

5

당신은

# Construct list of objects wtih mget 
ll <- mget(ls(pattern = "_adm0")) 

# Extract data.frames 
out <- lapply(ll , function(x) [email protected]) 
+0

Simon, 코드 작동, 고맙습니다.하지만 나중에 "ldply"+ "fortify"를 호출하면 예기치 않은 결과가 나타납니다. 나는 다시 요새화를 봐야 할 것이다. 나는 한 걸음도 놓치고 있다고 생각한 채 떠났다. 모든 이름을 수동으로 list()에 던지므로 요새화를위한 올바른 형식의'SPDF'를 얻을 수 있습니다. –

+0

@ JakeRuss 네가'fortify'를 사용한다면'SPDF'를위한 메소드를 가지고 있으므로'df' 부분을 exctract 할 필요가 없습니다. 당신이 방금 언급 했으니까요.하지만이 경우에는 비논리적입니다. 그냥'mget' 호출을 사용하십시오. –