programing

R에서 벡터와 리스트 데이터 유형의 차이점은 무엇입니까?

javamemo 2023. 4. 25. 21:47
반응형

R에서 벡터와 리스트 데이터 유형의 차이점은 무엇입니까?

R의 벡터 및 목록 데이터 유형 간의 주요 차이점은 무엇입니까?이 두 가지 데이터 유형을 사용할 때의 장점과 단점은 무엇입니까?

데이터 유형의 사용 사례를 보여주는 사례를 봐주시면 감사하겠습니다.

기술적으로 리스트는 벡터입니다. 하지만 이 용어를 사용하는 사람은 거의 없습니다."목록"은 "논리", "성격", "추상", "추상"과 같은 여러 모드 중 하나입니다.벡터라고 하는 것은 엄밀한 R 용어로 "원자 벡터"입니다.

 aaa <- vector("list", 3)
 is.list(aaa)   #TRUE
 is.vector(aaa)  #TRUE

목록은 (벡터의) "재귀적" 유형인 반면 원자 벡터는 그렇지 않습니다.

is.recursive(aaa)  # TRUE
is.atomic(aaa)  # FALSE

데이터 개체가 재귀적 속성인지, 원자적 속성인지 또는 차원 속성(행렬 및 배열)인지 여부에 따라 서로 다른 함수를 사용하여 데이터 개체를 처리합니다.그러나 서로 다른 데이터 구조의 "장점과 단점"에 대한 논의가 SO에게 충분히 집중된 질문인지 잘 모르겠습니다.Tommy의 말에 덧붙이자면, 리스트는 임의의 수의 다른 벡터를 보유할 수 있는 것 외에 구조를 정의하는 차원 속성을 가진 특정 유형의 리스트인 데이터 프레임을 사용할 수 있습니다.실제로 접힌 원자 객체인 매트릭스 및 배열과 달리, 데이터 프레임은 요인 유형을 비롯한 다양한 유형을 보유할 수 있습니다.

또한 경고할 사항이 있습니다.is.vector함수가 반환됩니다.FALSE이름이 아닌 다른 속성이 있을 때 사용합니다.참조: 벡터란 무엇입니까?

목록은 "재귀적"입니다.즉, 서로 다른 유형의 값을 포함할 수 있으며 다른 목록도 포함할 수 있습니다.

x <- list(values=sin(1:3), ids=letters[1:3], sub=list(foo=42,bar=13))
x # print the list
x$values   # Get one element
x[["ids"]] # Another way to get an element
x$sub$foo  # Get sub elements
x[[c(3,2)]]  # Another way (gets 13)
str(x)     # A "summary" of the list's content

목록은 R에서 데이터 세트를 나타내기 위해 사용됩니다.data.frameclass는 기본적으로 각 요소가 특정 유형의 열인 목록입니다.

또 다른 용도는 모형을 나타내는 경우입니다:lm유용한 개체 집합이 포함된 목록을 반환합니다.

d <- data.frame(a=11:13, b=21:23)
is.list(d) # TRUE
str(d)

m <- lm(a ~ b, data=d)
is.list(m) # TRUE
str(m)

원자 벡터(리스트는 아니지만 숫자, 논리 및 문자)는 모든 요소가 동일한 유형을 갖는 것으로 알려져 있으므로 유용합니다.이것은 그들을 매우 빠르게 조종하게 합니다.

R에 갓 입학했지만 C/Java/Ruby/PHP/Python 출신인 사람으로서, 저는 이렇게 생각합니다.

A list이렇게 해서 + 을 수 있다라고 말합니다.PHP 연연 php php php php php php php php 。

> foo = list(bar='baz')
> foo[1]
'baz'
> foo$bar
'baz'
> foo[['bar']]
'baz'

A vector이렇게 말합니다.서로 다른 항목을 링크된 목록에 넣는 것은 어쨌든 안티 패턴이기 때문에 링크된 목록이라고 생각해 보십시오.이는 SIMD/MMX/벡터 유닛이 이 단어를 사용하는 것과 같은 의미의 벡터입니다.

이와 유사한 소개 질문은 http://www.burns-stat.com/pages/Tutor/hints_R_begin.html에서 확인할 수 있습니다.

R을 최대한 빨리 실행할 수 있도록 부드러운 소개를 의도하고 있습니다.어느 정도 성공합니다.

--- 편집합니다: --

위의 참조에서 인용한 추가 설명 시도입니다.

원자 벡터입니다

발생할 가능성이 높은 원자 벡터는 세 가지 종류가 있습니다.

  • "그만합니다"
  • "논리적입니다"
  • "문자"입니다.

원자 벡터에 대해 기억해야 할 것은 그 안에 있는 모든 원소는 한 가지 유형뿐이라는 것입니다.

목록.

목록은 구성 요소마다 항목 유형이 다를 수 있습니다.목록의 구성요소는 다른 목록, 원자 벡터(및 기타)일 수 있습니다.

이 링크도 참조하시기 바랍니다.

목록에는 문자, 숫자, 논리 등과 같은 여러 데이터 유형이 포함되지만 벡터에는 유사한 유형의 데이터만 포함됩니다.예를 들어 다음과 같습니다.

scores <- c(20,30,40,50)
student <- c("A","B","C","D")
sc_log <- c(TRUE,FALSE,FALSE,TRUE)

다음을 참조하십시오.

mylist <- list(scores,student,sc_log)
# search for class of mylist vector 
#check structure of mylist using str() function.
str(mylist)
[1] list of 3
[1] $:num [1:4] 20 30 40 50
[2] $:chr [1:4] "A""B""C""D"
[3] $:log [1:4] TRUE FALSE FALSE TRUE

즉, mylist의 숫자, 문자, 논리 등 여러 데이터 유형을 포함하는 목록을 의미합니다.그러나 벡터에는 해당 벡터의 모든 요소에 대한 단일 데이터 유형이 있습니다.

예를 들어 다음과 같습니다.

벡터의 경우:

vector1 <- c(1,2,3,4)
Class(vector1)
[1] "Numeric"

#which means all elements of vector containing single data type that is numeric only.

언급URL : https://stackoverflow.com/questions/8594814/what-are-the-differences-between-vector-and-list-data-types-in-r 입니다.

반응형