나는 data.table을 부분 집합하고 몇 줄의 코드를 통해 결과를 실행하는 데 사용되는 목록을 반복하려고합니다. 변수를 사용한 부분 집합은 for 루프없이 완벽하게 작동하지만 루프가 포함되면 예상대로 작동하지 않습니다. 문제는 데이터 형식이나 범위에 의해 발생하는 것 같습니다.R : for 루프 및 필터 data.table 사용
다음 코드는 완벽하게 작동합니다 :
dt <- data.table(mpg)
list <- levels(dt$manufacturer)
dt[manufacturer==list[3]]
그때 for 루프와 목록을 루프를 시도하는 경우 : [업데이트 된 코드 - 해결] 내가하지 않는
for (var in list) {
subs <- data.table(melt(dt[manufacturer==var, list(model, hwy, cty)], id.vars='model'))
png(paste(var, 'png', sep='.'))
print(ggplot(subs, aes(model, value, col=variable)) + geom_point())
dev.off()
}
아무것도.
내게는 코드 부분이 동일하게 보이고 똑같이 작동해야합니다. 아무도 내가 두 번째 필터링과 아무 것도 얻지 못할 수도 있다는 제안을 가지고 있습니까? 어떤 도움을 주셔서 감사합니다.
그것은 많은 도움이 될 것입니다. 너는 무엇을하고 싶은가? 마지막 작업은 각 하위 집합을'인쇄 '하는 것입니까? – Arun
데이터 표를 사용하여 하위 집합을 지정하고 _apply 또는 다른 방법을 사용하지 않으려는 경우 예제가 철저하다고 생각합니다. 테이블을 부분 집합으로 만들면 결과를 사용하여 그래프를 인쇄합니다. mpg 데이터 세트의 모든 제조업체와 마찬가지로 수많은 하위 집합이 있으므로 반복하는 것이 가장 효율적인 방법입니다. – sgunnars
IIUC, 관용적 인 방법은'dt [,, by = manufacturer]'일 것입니다. –
Arun