2017-02-01 10 views
0

데이터 프레임의 모든 변수에서 단일 변수 로지스틱 회귀를 수행해야합니다. 저는 166 개의 변수를 가지고 있으며,이 프로세스를 단순화하기 위해 lapply를 사용하려고 노력해 왔습니다. 그러나, 나는 오류가 계속 :R 함수가 자체적으로 작동합니다. lapply 내에서 사용하면 오류가 발생합니다.

> lapply(data$Gates, FUN=Lmodel) 

Error in model.frame.default(formula = Sstatus ~ x, data = data, 
na.action = na.exclude, : 
variable lengths differ (found for 'x') 

을 그래서 같은 기능 Lmodel를 구축 :

Lmodel<-function(x){ 
(glm(Sstatus~x, data=data, family="binomial")) 
} 

lapply와 함께 사용하지 않을 경우이 기능은 작동합니다

> Lmodel(data$Gates) 

Call: glm(formula = Sstatus ~ x, family = "binomial", data = data, 
na.action = na.exclude) 

Coefficients: 
(Intercept)   xy 
2.5986  -0.6527 

Degrees of Freedom: 169 Total (i.e. Null); 168 Residual 
(8 observations deleted due to missingness) 
Null Deviance:  96.72 
Residual Deviance: 95.57 AIC: 99.57 

내 종속 변수 Sstatus에는 누락 된 값이 포함되어 있으며 이것이 내 문제가있는 곳이라고 생각합니다. 그러나, 나는 왜 함수가 자체적으로 작동하는지 이해하지 못한다. 그러나 lapply와 함께 사용할 때는 그렇지 않다. 이 문제를 어떻게 해결할 수 있습니까?

+2

나는 당신이 무엇을 lapply 이해했다고 생각하지 않습니다. 문서를 연구해야합니다. – Roland

+1

'lapply()'는 첫 번째 인자로 들어가서 첫번째 인자의 원소를 하나씩 함수에 넘긴다. – jogo

+1

'lapply (data $ Gates, ...)'를 사용했을 때 한 번에 하나의 값을 함수에 보냈습니다. 함수를 사용했을 때 전체 크기의 벡터를 보냈습니다. –

답변

0

lapply를 사용하려면 목록의 요소가 독립 변수의 관측치가 포함 된 벡터 인 목록을 만들어야합니다. 예를 들어 Sstatus, indepen1, indepen2, indepent3 변수가있는 데이터 집합이 있습니다.

# make a list 
list.of.indepent <- vector("list", 3) 
list.of.indepent[[1]] <- indepen1 
etc 

그런 다음

lapply(list.of.indepent, FUN=Lmodel) 

작동합니다. 당신은 다음과 같이 Lmodel 기능을 편집해야

Lmodel<-function(x){ 
(glm(data$Sstatus~x, family="binomial")) 
}