46 개의 변수를 2107377 회 관찰 한 대형 데이터 프레임이 있습니다. 이 날을 기준으로이 데이터 프레임을 부분 집합하는 함수가 있습니다.하위 집합()을 사용하여 코드 효율성 향상
subset.function = function(dataset,year,focal.year,day.of.year) {
subset(dataset, year==focal.year & day.of.year<=ifelse(leap_year(focal.year), 112,111))
}
데이터는 2004-2014 년에 수집되었습니다. 이 데이터 프레임에서 각각 11 개의 데이터 프레임을 만들고 싶습니다. 각 데이터는 초점 연도 (초점 연도 = 2004, 2005, 2006 등)의 처음 111 (또는 윤년 중 112) 일과 관련된 모든 데이터로 구성됩니다.).
나는 내 일부 기능 11 시간, 새로운 변수에 저장 될 때마다 적용하여이 작업을 수행 할 수 있습니다 :
variable1 = subset.function(dataset, year, 2004, day.of.year)
variable2 = subset.function(dataset, year, 2005, day.of.year)
...
variable11 = subset.function(dataset, year, 2011, day.of.year),
을하지만 매우 재미 아니다. 나는 더 적은 선으로이 작업을 수행하는 루프를 사용하려했지만, 그것은 작동하지 않습니다
는test = vector("list")
for (i in 1:years) {
test[[i]] = subset.function(dataset, year, focal.year[i], day.of.year)
}
이 원본과 목록의 각 항목의 요소와 동일한 수의 큰 목록을 만듭니다 데이터 프레임. 또한 기능의 apply
제품군을 사용하여 시도했다 :
apply(dataset, year, focal.year[1:11], day.of.year)
을 똑같이 실망스러운 결과. 내가 뭘 놓치고 있니?
완전히 관련 그러나 읽기 http://stackoverflow.com/questions/9860090/in-r-why-is-better-than-subset – user20650
'split' 여기에 옵션이 될 수있는 가치가있을 수도 없음 – user20650