본문 바로가기
반응형

5. 자료구조/4) 리스트 | list()10

[R 코딩] 리스트에서 특정 조건으로 요소 제거하기 리스트에서 특정 조건으로 요소를 제거하는 방법입니다. 예를들어 "문자열"만 제거한다던가, NA 요소를 제거하는 것입니다. discard 함수 안에 is 함수를 사용하면 됩니다. 리스트를 하나 정의해봅시다. > li=list(1,"a",2,"b",NA) > li [[1]] [1] 1 [[2]] [1] "a" [[3]] [1] 2 [[4]] [1] "b" [[5]] [1] NA 문자열만 제거해보겠습니다. > discard(li,is.character) [[1]] [1] 1 [[2]] [1] 2 [[3]] [1] NA 숫자를 제거할 때는 is.numeric, NA를 제거할 때는 is.na 를 대신 넣으면 됩니다. 2020. 12. 18.
[R 코딩] 리스트안 NULL 요소 일괄제거 방법 (compact 함수) 리스트 안에 NULL 요소가 있는 경우가 있습니다. NULL 요소를 제거할 때는 purrr 라이브러리의 compact 함수를 사용합니다. purrr은 tidyverse 세계관이므로, tidyverse 패키지를 불러와도 됩니다. library(purrr) #또는 library(tidyverse) NULL 요소가 있는 리스트를 하나 정의해봅시다. > li=list(A=1,B=2,C=NULL,D=NULL,E=3) > li $A [1] 1 $B [1] 2 $C NULL $D NULL $E [1] 3 compact 함수를 적용하여 NULL 요소를 제거합시다. > compact(li) $A [1] 1 $B [1] 2 $E [1] 3 2020. 12. 17.
[R코딩] 리스트 요소를 제거하는 방법 리스트의 요소를 제거할 때는 인덱싱 후 NULL을 입력하면 됩니다. 먼저 리스트를 하나 만들어봅시다. 네 사람의 수학점수입니다. > names=c("Tim","Marry","Kitkat","Rorry") > math=c(86,78,46,23) > li=list() > list[names]=math > li $Tim [1] 86 $Marry [1] 78 $Kitkat [1] 46 $Rorry [1] 23 팀의 점수를 없애봅시다. > li["Tim"]=NULL > li $Marry [1] 78 $Kitkat [1] 46 $Rorry [1] 23 2020. 12. 16.
[R 코딩] 이름과 내용을 각각 벡터로 정의하고 리스트 만들기 이름과 내용을 각각 벡터로 정의하고 리스트를 만들 수도 있습니다. 먼저 이름과 내용을 각각 정의합시다. 다섯사람의 수학점수라고 합시다. > names=c("Tim","Marry","Kitkat","Rorry") > math=c(86,78,46,23) 비어있를 리스트를 하나 정의합시다. > li=list() 아래와 같이 이름과 내용을 리스트에 입력합시다. > li[names]=math > li $Tim [1] 86 $Marry [1] 78 $Kitkat [1] 46 $Rorry [1] 23 2020. 12. 16.
[R코딩] 리스트 인덱싱 할때, 요소 자체의 자료형으로 출력 리스트를 인덱싱할 때, 요소를 리스트 형태로 출력할 수도 있고 요소 자체의 자료형으로 출력할 수도 있습니다. 먼저 리스트를 하나 정의합시다. > li=list(v=c(1,2,3),m=matrix(1:4,2),df=data.frame(a=c(1,2,3),b=c(4,5,6))) > li $v [1] 1 2 3 $m [,1] [,2] [1,] 1 3 [2,] 2 4 $df a b 1 1 4 2 2 5 3 3 6 리스트 형태로 인덱싱 대괄호를 한겹만 사용합니다. > li[1] $v [1] 1 2 3 > li[2] $m [,1] [,2] [1,] 1 3 [2,] 2 4 > li[3] $df a b 1 1 4 2 2 5 3 3 6 자료형을 확인해봅시다. > class(li[1]) [1] "list" > class(.. 2020. 12. 16.
[R 코딩] 리스트를 데이터프레임으로 만드는 stack 함수 stack 함수를 이용하면 리스트를 데이터프레임으로 만들 수 있습니다. 왜 리스트를 데이터프레임으로 바꾸는지, 어떻게 바뀌는지는 예제를 통해 이해할 수 있을것입니다. 단, 벡터나 factor가 들어있는 리스트만 가능합니다. 예를들어 한국,미국,영국 세 나라에서 다섯사람씩 모였고 이들의 나이를 리스트레 저장했다고 합시다. > li=list(kor=c(23,42,66,36,72),us=c(11,16,25,66,73),uk=c(16,5,34,25,12)) > li $kor [1] 23 42 66 36 72 $us [1] 11 16 25 66 73 $uk [1] 16 5 34 25 12 위 리스트에 stack 함수를 적용한 결과는 아래와 같습니다. > stack(li) values ind 1 23 kor 2 4.. 2020. 12. 16.
[R 코딩] list 를 벡터로 만들기 (unlist 함수) 벡터, 행렬, 데이터프레임을 하나씩 정의하여 list에 넣어봅시다. > v=c(1,2,3) > m=matrix(1:4,2) > df=data.frame(a=c(10,20,30),b=c(40,50,60)) 리스트에 넣은 결과입니다. > ml=list(v,m,df) > ml [[1]] [1] 1 2 3 [[2]] [,1] [,2] [1,] 1 3 [2,] 2 4 [[3]] a b 1 10 40 2 20 50 3 30 60 리스트에 unlist 함수를 적용해봅시다. > unlist(ml) a1 a2 a3 b1 b2 b3 1 2 3 1 2 3 4 10 20 30 40 50 60 벡터로 변한것을 알 수 있습니다. 2020. 12. 15.
[R기초] 리스트는 언제 사용할까? [R기초] 리스트는 언제 사용할까? R을 공부하다 보면 자료구조라는 것을 배우게 됩니다. 자료를 담는 그릇인데 아래와 같은 것들이 있습니다. - 벡터- 행렬- 배열- 리스트- 요인- 데이터프레임- 테이블 이들 중 "이건 왜있지?" 라는 생각이 드는 자료구조가 있었습니다. 바로 '리스트'입니다. 지금은 R 초보자는 벗어났다고 생각하는데, 초보 시절에는 리스트의 존재 이유를 알기가 어려웠습니. 따라서 거의 사용하지도 않았습니다. 지금은 없어서는 안될 존재입니다. 오늘은 내가 경험한 리스트의 용도 중 하나를 공유하려고 합니다. 상황을 하나 가정하겠습니다. 10개의 벡터를 만들어야 하는 상황입니다. 10개의 벡터를 만들고 각각의 벡터에 0과 10사이의 임의의 숫자 5개를 넣으려고 합니다. 아래와 같은 코드를 짜.. 2020. 9. 16.
[R 기초] 리스트 인덱싱 하는 방법 [R 기초] 리스트 인덱싱 하는 방법 먼저 리스트를 하나 정의하겠습니다. 벡터 두개와 데이터프레임하나를 넣었습니다. v1=c(1,2,3)v2=c("a","b","c")d1=data.frame(v1,v2) mylist=list(v1,v2,d1) 아래와 같이 생성되었습니다. > mylist[[1]][1] 1 2 3 [[2]][1] "a" "b" "c" [[3]] v1 v21 1 a2 2 b3 3 c 리스트 인덱싱은 크게 세가지가 있는데요. 리스트 자체를 인덱싱하는 방법과, 구성요소에 접근하는 방법과, 구성요소의 원소에 접근하는 방법입니다. 1) 리스트 인덱싱 첫번째 리스트에 접근해보겠습니다. > mylist[1][[1]][1] 1 2 3 이렇게 접근할 경우 자료형은 list가 됩니다. 첫번째 리스트와 두번째.. 2020. 9. 16.
[R기초] 리스트 정의하는 방법 + 자료구조 확인 [R기초] 리스트 정의하는 방법 #1. 형식 list(...) ... : 어떤 형식의 데이터도 넣을 수 있고, 개수 제한 없음. #2. 예제 list 안에 지금까지 배운 벡터, 행렬, 배열을 넣어봅시다. 가독성을 위해 벡터를 빨강, 행렬을 초록, 배열을 주황으로 표시하였습니다. > my_v=c(1,2,3) > my_mat=matrix(c(1,2,3,4,5,6),2) > my_arr=array(c(1,2,3,4,5,6,7,8),dim=c(2,2,2)) > my_list=list(my_v,my_mat,my_arr) > my_list [[1]] [1] 1 2 3 [[2]] [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 [[3]] , , 1 [,1] [,2] [1,] 1 3 [2,] 2 4 .. 2019. 11. 30.
반응형