2017-12-09 28 views
0

R에 50 lmglm 개체가 있습니다. summary(lm...) 번을 입력하지 않고도이 모든 내용을 요약하고 싶습니다. 그것을 할 수있는 빠른 방법이 있습니까? 데이터 세트의 이름은 같은 방식으로 시작됩니다. lin.mod.t # 또는 lin.mod.s # 여기서 {# = 1,2, ..., 25}. 나는 `Summary` 여러 LM 및 GLM 객체

ls(pattern = "lin.mod") 
objects(pattern = "lin.mod") 

를 사용하여 모든 모델을 나열 할 수 있습니다하지만 ls 또는 objects를 사용의 결과에 대한 summary를 실행할 수 없습니다. 내가 summary(eval(parse(text = ls(pattern = "lin.mod"))))을 사용했지만 이것은 첫 번째 것을 실행합니다. 어떤 제안? 아마도 lapply을 사용할 것입니까?

+0

어떻게 처음에 50 개 LM 및 GLM 객체를 얻었 는가? 어쩌면 그곳에서 시작하고 왜 ** 하나의 ** 객체를 유지하기 위해 목록에 저장되지 않았습니까? – Parfait

답변

0

어때?

# 2 sample models 
lin.mod.1 <- lm(mpg ~ wt, data = mtcars); 
lin.mod.2 <- lm(mpg ~ wt, data = mtcars); 

# Get models and store in list 
lst <- lapply(ls(pattern = "lin.mod"), get); 

# Summary of models 
res <- lapply(lst, summary); 

설명 : 목록 lst의 현재 환경과 저장소에서 패턴 "lin.mod" 일치 get 모든 모델. 목록 res에 모든 모델의 summary을 저장하려면 lapply을 사용하십시오.

0

당신은 그들이 모두 유사하게 동작과 같이 as.symbol 대신 as.name의 선택할 수 있습니다, 아래처럼, 나는 두 가지 기능 evalas.name를 사용하고,이 문제를 해결하기 위해 NSE 버전 속된 의를 선택할 수 있습니다 :

?as.name 

as.name 먼저 (그래서 as.character 방법을 사용하지 않는) 문자 벡터 내부적 인수 강제 변환. 그런 다음 첫 번째 요소를 가져오고 ""가 아닌 경우 해당 이름의 심볼을 반환합니다 (요소가 NA_character_이면 이름은 NA입니다).

?eval 

평가는 envir 의해 특정 환경에 EXPR 인수를 계산하고 계산 된 값을 반환한다. envir을 지정하지 않으면 기본값은 parent.frame() (eval 호출이 인 환경)입니다.

lin.mod.1 <- lm(mpg ~ wt, data = mtcars) 
lin.mod.2 <- lm(mpg ~ hp, data = mtcars) 
lin.mod.3 <- lm(mpg ~ disp, data = mtcars) 

objects_lms <- ls(pattern ="lin\\.mod") 
vals <- lapply(objects_lms, function(x)eval(as.name(x))) 
lapply(vals, summary) 
+0

'get'보다'eval (as.name (...)) '을 사용하는 이점이 없습니다 (이전의 저의 해결책을보십시오). –