2016-06-15 4 views
3

mu.fo 수식의 왼쪽을 response 변수에 저장된 값으로 수정하고 싶습니다. 아이디어는 다음과 같은 새로운 수식을 얻는 것입니다 : profit ~ x1 + x2 실제로는 response ~ x1 + x2을 얻습니다.수식의 왼쪽을 수정하는 방법은 무엇입니까?

response 변수에 저장된 값을 자동으로 어떻게 사용할 수 있습니까?

response <- 'profit' 
mu.fo <- ~ x1 + x2 
update.formula(mu.fo, response ~ .) 
+0

답답해 (attr (terms (mu.fo), term.labels '), 응답)' – rawr

+0

오른쪽 개체가 수식으로 필요하거나 필요에 따라 해결할 수 있습니까? ? 내 대답 중 일부는 그 구체적인 세부 사항을 놓쳤다. –

+0

예, model.matrix에서 사용하려면 수식으로 오른쪽이 필요합니다. – fhernanb

답변

1
response <- 'profit' 
mo.fo <- ~ x1 + x2 
mo.fo <- as.formula(paste(response, "~ x1+x2")) 
mo.fo 

profit ~ x1 + x2 
+0

감사합니다. @ Hack-R, 귀하의 응답을 사용하여 일반 "mu.fo" ''mu.fo <- as.formula (paste, response.paste (mu.fo), collapse = '')))''를 사용합니다. – fhernanb

+0

@fhernanb 굉장해, 다행이다. 이것이 도움이 되었다면, 솔루션으로 upvote 또는 mark하시기 바랍니다. 나는 rep 지점에 중독되어있어. ;) 콜롬비아 나시 오날 대학교 (Universidad Nacional de Colombia)에 제 안부를 전합니다! –

1

는이를 달성하는 방법은 여러 가지가 있습니다.

as.name()을 사용하면 정보가 "profit" 인 문자를 R 이름 (또는 기호)으로 인코딩 할 수 있습니다. 여기 response

response <- as.name("profit") 
frm <- as.formula(bquote(.(response) ~ .)) 
str(frm) 

> str(frm) 
Class 'formula' language profit ~ . 
    ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 

는 기호/이름 profit입니다. 우리는 문자 response보다는 response에있는 것을 대체하기 위해 bquote을 사용하고 그 표현을 공식에 ​​강요합니다.

foo <- c("profit", "loss") 
response <- as.name(foo[1]) 
as.formula(bquote(.(response) ~ .)) 
response <- as.name(foo[2]) 
as.formula(bquote(.(response) ~ .)) 

> foo <- c("profit", "loss") 
> response <- as.name(foo[1]) 
> as.formula(bquote(.(response) ~ .)) 
profit ~ . 
> response <- as.name(foo[2]) 
> as.formula(bquote(.(response) ~ .)) 
loss ~ . 

다른 방법이 함께 또는 paste() 문자열입니다 : "profit" 너무 문자 벡터의 경우 우리가 입력 한 것처럼 우리가 같은 개체에 결국이 방법은 profit ~ .

> all.equal(frm, profit ~ .) 
[1] TRUE 

이 작동 사용 당신이 R 것을 정말 그것이 무엇인지에 따라 달라집니다의 선택을 끝낼 reformulate()

response <- "profit" 
f1 <- formula(paste(response, "~ .")) 
f2 <- reformulate(".", response = response) 
str(f1) 
str(f2) 
all.equal(f1, f2) 
all.equal(frm, f1) 

> str(f1) 
Class 'formula' language profit ~ . 
    ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
> str(f2) 
Class 'formula' language profit ~ . 
    ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
> all.equal(f1, f2) 
[1] TRUE 
> all.equal(frm, f1) 
[1] TRUE 

eally하고 있습니다.

관련 문제