문제가 생겼고 주말을 보낸 후 도움을 요청하고 싶습니다.R : "데이터"- 캐릭터로서의 수식의 사용법?
df <- data.frame(x=rnorm(100), z=rnorm(100), y=rnorm(100), f=rep(1:5,length.out=100))
mod <- lm(y ~ x, data=df[df$z>0,])
내가 모델의 데이터 인수를 재활용 할이 :
df[df$z > 0, ]
을 :
dat <- mod$call[['data']]
이 나에게주는 문제를 설명하기 위해, 내가 직접 예에 뛰어 싶습니다
그러나 str(dat)
은 language
유형의 개체임을 나타냅니다. 그러나이 표현식을 사용하여 lm
(하위 설정 포함)에서 사용 된 데이터 프레임에 액세스하여 다른 변수 (예 : f
)의 해당 값을 가져오고 싶습니다. 언어 개체를 as.character()
문자로 변환하면 문자 벡터가 발생하고 대괄호 중 일부는 손실됩니다.
내가 함수 내에서이를 사용하려면, 그리고 내가 무엇을 찾고있는 것은이 같은 것입니다 : 내가 f
로 var.name
를 지정하면 하위 설정하지 않고
foo <- function(fm, "var.name"){
new <- paste(dat, "$", var.name, sep="")
newvar <- eval(parse(text=new), envir=.GlobalEnv)
... do stuff with newvar ...
}
,이 절차는 나에게 변수 f
을 제공합니다. 하위 설정으로 dat
이 대괄호가있는 문자 - 벡터가 되었기 때문에 parse
의 문제가 발생합니다. 사이드 참고로
var.name
와 같은 표현을 사용하는 대신
lm
α- 함수에서
data
-argument을 재활용 할 이유는 내가 하위 설정을 매우 자주, 그것을 가진 인식 변화이다 작품으로부터 얻은 것은 내 인생을 훨씬 쉽게 만든다. 또한 오류의 원인을 제거합니다.
사람이 여기 좀 도와 수 있다면 내가보기 엔 빚을 것
...
같은 단지
eval
이 표현 당신은()'deparse'살펴 보았다 수 있습니까? –'mod $ model'은 어떨까요? 그것은'x'와'y'를 가질 것입니다, 충분하니? – flodel
Ben, 정말 고마워! 실제로 코드의 다른 부분에서 deparse를 사용합니다. 내가 그것을 생각하지 않았다는 당혹 스러움. 고마워요! – coffeinjunky