안녕하세요.
'의학논문 작성을 위한 R 통계와 그래프' 책을 공부하다 p.30에서 루프와 관련된 내용이 있어서,
로지스틱 회귀분석에 적용해 보기 위해 연습해 보려고 했는데 잘 안 되어 질문합니다.
아래 R 구문에서 해보려고 한것은, loop을 이용해
mytable(Dx~age,data=acs)
mytable(Dx~sex,data=acs)
mytable(Dx~entry,data=acs)
를 순서대로 나오게 하려고 합니다.
===
require(moonBook)
data(acs)
# list 만들기
list <- c(
'age',
'sex',
'entry'
)
# loop 해보기
for(i in list){
mytable(Dx~i,data=acs)
}
===
해당 내용에 대한 error 메세지는 다음과 같이 나옵니다.
===
Error in data.frame(y = data[[y]], x = data[[x]]) :
arguments imply differing number of rows: 857, 0
Error in obj[[i]] : 첨자의 허용 범위를 벗어났습니다
===
구문을 어떻게 수정해야 나오는지 알려주시면 감사하겠습니다
Comment 3
-
바슈메트
2020.03.09 16:06
-
cardiomoon
2020.03.09 17:56
안되는 이유는 두가지입니다.1) 위에서는 리스트를 만든 것이 아니라 list라는 이름의 벡터를 만든 것입니다.2) 함수의 인수로 쓰는 formula는 문자가 아닙니다.두가지에 이유에 대해 이해가 안가실 지도 모르겠습니다만 R을 조금 더 공부하시면 아시게 됩니다. 어쩃든 다음과 같이 하면 됩니다.require(moonBook)data(acs)var <- c('age', 'sex', 'entry')for(i in 1:3) print(eval(parse(text=paste0("mytable(Dx~",var[1],",data=acs)")))) -
바슈메트
2020.03.10 01:50
교수님 답변 감사합니다!
위 #loop 해보기 부분을 다음과 같이 대치해도 작동을 하지 않습니다.
for(i in 1:3) mytable(Dx~list[i],data=acs)