2012-10-17 3 views
0

에서 :매개 변수화 ddply 데이터 프레임에 대한 R

exampleDF <- structure(list(val1 = structure(c(1L, 2L, 1L, 3L), .Label = c("MX", 
"SS", "VF"), class = "factor"), var2 = c(1, 2, 3, 4)), .Names = c("val1", 
"var2"), row.names = c(NA, -4L), class = "data.frame") 

대신 일 :

ddply(exampleDF, .(val1), summarize, sum(as.numeric(var2))) 

다음과 같이 내가 그것을 시도하고 didn를하지만이 가능, (뭔가를 ddply 전화를 매개 변수화하는 것입니다 ' t 일) 결과

colname <- 'var2' 
ddply(exampleDF, .(val1), summarize, sum(as.numeric(colname))) 

..

val1 ..1 
1 MX NA 
2 SS NA 
3 VF NA 
Warning messages: 
1: In eval(expr, envir, enclos) : NAs introduced by coercion 
2: In eval(expr, envir, enclos) : NAs introduced by coercion 
3: In eval(expr, envir, enclos) : NAs introduced by coercion 

데이터 프레임의 열 집합에 대해 ddply을 호출하고 ddply의 각 결과에 대한 플롯을 생성해야합니다. 그러므로 n 개의 열에 대해 같은 줄을 반복하는 대신 ddply 호출을 매개 변수화하려고했습니다.

답변

2

이것은 실제로 summarize이 아닌 ddply의 문제입니다. parseeval으로 시도해 볼 수도 있지만 일반적으로 좋은 생각은 아닙니다.

colname <- 'var2' 
ddply(exampleDF, .(val1), function(sub_dat) sum(as.numeric(sub_dat[[colname]]))) 

당신은 당신이 그러나, 나는 거의 항상 같은 저자에 의해 만들어 ggplot2 (에 facetting를 사용하여 플롯의 같은 집합을 만들 수있었습니다, 이런 여러 플롯을 생성 할 말 : 내가 좋아하는 뭔가를 할 것입니다 plyr으로). 예 : facet_wrapfacet_grid의 설명서

+0

의견을 보내 주셔서 감사합니다. 나는'facet_wrap'을 살펴볼 것입니다. 제안한 코드의 경우 변경 사항을 통합하면 다른 기능을 수행 할 수없는 것처럼 보입니다. 함수 (sub_dat) print (length (sub_dat)))'내가 무엇을 할 수 없는지, 즉 : 나는 할 수 없다 :'ddply (exampleDF, colname, function (sub_dat) sum (as_numeric (sub_dat [[var2 ']])) 할 것입니다. 오류 : .fun (조각, ...)의 오류 : 사용되지 않는 인수 (function (sub_dat) print (길이 (sub_dat)))' –