이것은 R 코드를 디버그하는 데 정말로 어려움이 있습니다.함수 안에 ddply가있는 객체를 찾을 수 없습니다.
순차적으로 명명 된 다른 열에 동일한 기능을 적용하려면 ddply()
을 사용하고 싶습니다. 예. a, b, c. 이렇게하려면 열 이름을 문자열로 반복적으로 전달하고 함수에서 참조 할 수 있도록 eval(parse(text=ColName))
을 사용합니다. 나는이 기술을 다른 대답에서 움켜 잡았다.
다른 함수 안에 ddply()
을 넣기 전까지는 제대로 작동합니다. 다음은 샘플 코드입니다.
# Required packages:
library(plyr)
myFunction <- function(x, y){
NewColName = "a"
z = ddply(x, y, summarize,
Ave = mean(eval(parse(text=NewColName)), na.rm=TRUE)
)
return(z)
}
a = c(1,2,3,4)
b = c(0,0,1,1)
c = c(5,6,7,8)
df = data.frame(a,b,c)
sv = c("b")
#This works.
ColName = "a"
ddply(df, sv, summarize,
Ave = mean(eval(parse(text=ColName)), na.rm=TRUE)
)
#This doesn't work
#Produces error: "Error in parse(text = NewColName) : object 'NewColName' not found"
myFunction(df,sv)
#Output in both cases should be
# b Ave
#1 0 1.5
#2 1 3.5
아이디어가 있습니까? NewColName은 함수 안에서도 정의됩니다!
나는이 질문에 대한 대답을 loops-to-create-new-variables-in-ddply으로 도울 수 있다고 생각했지만 오늘은 머리를 두드리는 데 충분했다. 그리고 손을 들어 도움을 요청할 때가되었다.
솔루션에 @Hadley 기능이 필요할 수도 있습니다 :-) –
이 모든 것을 시도해 볼 때 많은 노력이 필요합니다. 그룹의 머리를 두 드리는 것은 항상 감사합니다 ...... 나는 영혼을 지켜 드리겠습니다. –