리스트 다루기

SAS 사용자를 위한 R

Melinda Higgins, PhD

Research Professor/Senior Biostatistician Emory University

다른 객체를 결합해 리스트 생성

# 논리 스칼라 생성
logic_scalar <- TRUE
logic_scalar
[1] TRUE

TRUE 스칼라 요소

SAS 사용자를 위한 R

다른 객체를 결합해 리스트 생성

# 문자 벡터 age_charvec 생성
age_charvec <- c("child", "young", "old")
age_charvec
[1] "child" "young" "old"

TRUE 스칼라와 문자 벡터

SAS 사용자를 위한 R

다른 객체를 결합해 리스트 생성

# 행렬 num_matrix 생성
a <- c(5.0, 3.1, 2.4)
b <- c(4.1, 2.2, 5.4)
num_matrix <- matrix(c(a, b),
                     nrow = 3,
                     ncol = 2)
num_matrix
     [,1] [,2]
[1,]  5.0  4.1
[2,]  3.1  2.2
[3,]  2.4  5.4

TRUE 스칼라, 문자 벡터, 행렬

SAS 사용자를 위한 R

서로 다른 타입의 객체를 결합해 리스트 생성

# 스칼라, 벡터, 행렬로 리스트 생성
list_logicagemtx <-
  list(logic_scalar, age_charvec, num_matrix)
list_logicagemtx
[[1]]
[1] TRUE

[[2]]
[1] "child" "young" "old"  

[[3]]
     [,1] [,2]
[1,]  5.0  4.1
[2,]  3.1  2.2
[3,]  2.4  5.4

리스트에 결합된 모든 요소

SAS 사용자를 위한 R

이름이 있는 리스트 요소

# 리스트 요소에 이름 지정, 이름 확인
names(list_logicagemtx) <- c("logicalValue", "ageDescription", "numericMatrix")
names(list_logicagemtx)
[1] "logicalValue"   "ageDescription" "numericMatrix"
# list_logicagemtx의 구조 확인
str(list_logicagemtx)
List of 3
 $ logicalValue  : logi TRUE
 $ ageDescription: chr [1:3] "child" "young" "old"
 $ numericMatrix : num [1:3, 1:2] 5 3.1 2.4 4.1 2.2 5.4
SAS 사용자를 위한 R

이름으로 리스트 요소 선택

# $로 ageDescription 선택
list_logicagemtx$ageDescription
[1] "child" "young" "old"
# ageDescription 요소의 클래스 확인
class(list_logicagemtx$ageDescription)
[1] "character"
# 벡터 클래스인지 확인
is.vector(list_logicagemtx$ageDescription)
[1] TRUE

리스트에서 문자 벡터 선택

SAS 사용자를 위한 R

Hmisc 출력

# sex와 bmi에 Hmisc::describe() 실행
davisHmisc <- daviskeep %>%
  select(sex, bmi) %>%
  Hmisc::describe()

# Hmisc::describe() 출력 구조
str(davisHmisc)
List of 2
 $ sex:List of 5
  ..$ descript: chr "sex"
  ..$ units   : NULL
  ..$ format  : NULL
  ..$ counts  : Named num [1:3] 199 0 2
  .. ..- attr(*, "names")= chr [1:3] "n" "missing" "distinct"
  ..$ values  :List of 2
  .. ..$ value    : chr [1:2] "F" "M"
  .. ..$ frequency: num [1:2(1d)] 111 88
  ..- attr(*, "class")= chr "describe"
 $ bmi:List of 6
  ..$ descript: chr "bmi"

... rest of output omitted ...
SAS 사용자를 위한 R

Hmisc 출력

# Hmisc describe 출력의 sex 요소 보기
davisHmisc$sex
sex
       n  missing distinct
     199        0        2

Value          F     M
Frequency    111    88
Proportion 0.558 0.442
# describe 클래스도 리스트인지 확인
is.list(davisHmisc$sex)
[1] TRUE
SAS 사용자를 위한 R

Hmisc 출력

# davisHmisc$sex의 요소 이름 보기
names(davisHmisc$sex)
[1] "descript" "units" "format" "counts" "values"
# $ 선택자로 sex의 counts 표시
davisHmisc$sex$counts
  n  missing distinct
199        0        2
SAS 사용자를 위한 R

상관검정 출력

# psych::corr.test() 출력 저장
daviscorr <- daviskeep %>%
  select(bmi, weight, height) %>%
  psych::corr.test()
# psych::corr 출력의 11개 요소 이름 보기
names(daviscorr)
 [1]  "r"      "n"      "t"      "p"      "se"     
 [6]  "sef"    "adjust" "sym"    "ci"     "ci.adj"
 [11] "Call"
SAS 사용자를 위한 R

상관검정 출력

daviscorr$p
                bmi       weight       height
bmi    0.000000e+00 2.569508e-64 3.628533e-08
weight 8.565028e-65 0.000000e+00 4.017148e-40
height 3.628533e-08 2.008574e-40 0.000000e+00
daviscorr$ci
                lower         r     upper            p
bmi-weght   0.8410885 0.8775201 0.9060257 8.565028e-65
bmi-heght   0.2524241 0.3782344 0.4914688 3.628533e-08
weght-heght 0.7074835 0.7707306 0.8217303 2.008574e-40
SAS 사용자를 위한 R

t-검정 출력

# 비풀드 t-검정: 성별에 따른 bmi
davisunpooled <- t.test(bmi ~ sex,
                        data = daviskeep)
class(davisunpooled)
[1] "htest"
is.list(davisunpooled)
[1] TRUE
names(davispooled)
[1] "statistic"   "parameter"   
[3] "p.value"     "conf.int"    
[5] "estimate"    "null.value"  
[7] "alternative" "method"      
[9] "data.name"
SAS 사용자를 위한 R

카이제곱 검정 출력

# 성별별 bmigt25의 교차표 생성 및 보기
tablebmisex <- daviskeep %>%
  with(table(bmigt25, sex))
daviscs <- chisq.test(tablebmisex)
class(daviscs)
[1] "htest"
names(daviscs)
[1] "statistic" "parameter" "p.value"   "method"    "data.name" "observed"
[7] "expected"  "residuals" "stdres"
SAS 사용자를 위한 R

htest 리스트 클래스의 출력

t-검정 출력

davisunpooled$statistic
davisunpooled$parameter
davisunpooled$p.value
        t
-7.515792

      df
149.4533

[1] 4.818621e-12

카이제곱 검정 출력

daviscs$observed
                 sex
bmigt25             F   M
  1. underwt/norm 107  54
  2. overwt/obese   4  34
daviscs$expected
                 sex
bmigt25                  F        M
  1. underwt/norm 89.80402 71.19598
  2. overwt/obese 21.19598 16.80402
SAS 사용자를 위한 R

전복 분석 결과를 맞춤화하기 위해 리스트 출력 객체를 활용해 봅시다.

SAS 사용자를 위한 R

Preparing Video For Download...