codememo

R에서 데이터 프레임과 목록의 차이점은 무엇입니까?

tipmemo 2023. 10. 15. 17:24
반응형

R에서 데이터 프레임과 목록의 차이점은 무엇입니까?

데이터 프레임목록의 차이점은 무엇입니까?R? 어떤 것을 사용해야 합니까?어떤 것이 더 쉽게 뒤집힐 수 있습니까?

정확한 문제:저는 먼저 "a", "b", "c"와 같은 3개의 문자열 요소를 저장해야 합니다. 이들 각각에 대해 나중에 3개의 요소를 추가해야 합니다. 예를 들어 "a"의 경우 "a1", "a2", "a3"을 추가해야 합니다.나중에 이 요소들에 액세스하기 위해 루프에 중첩된 것을 사용해야 합니다.

데이터 프레임이나 목록 또는 다른 데이터 유형을 사용하는 것이 혼란스럽다는 것입니까? 먼저 저장한 다음 추가할 수 있는 데이터 유형입니다(각 열의 종류).

현재 "교체할 항목 수가 교체 길이의 배수가 아닙니다."와 같은 오류가 발생합니다.

그 질문은 일부 사람들이 생각하는 것만큼 어리석지는 않습니다.저는 그 차이 때문에 어려움을 겪고 있는 많은 사람들을 알고 있고, 어디에 무엇을 사용해야 하는지 알고 있습니다.요약하자면:

목록은 R에서 단연코 가장 유연한 데이터 구조입니다.각 요소의 클래스, 길이 또는 구조에 아무런 제한이 없는 요소의 집합으로 볼 수 있습니다.주의해야 할 것은 두 요소에 동일한 이름을 부여하지 않는 것입니다.이는 많은 혼란을 야기할 수 있으며, R은 이에 대한 오류를 제공하지 않습니다.

> X <- list(a=1,b=2,a=3)
> X$a
[1] 1

데이터 프레임도 목록이지만 몇 가지 제한 사항이 있습니다.

  • 두 개의 다른 변수에 동일한 이름을 사용할 수 없습니다.
  • 데이터 프레임의 모든 요소는 벡터입니다.
  • 데이터 프레임의 모든 요소는 길이가 같습니다.

이러한 제약과 그로 인한 2차원 구조로 인해 데이터 프레임은 행렬의 일부 동작을 모방할 수 있습니다.행을 선택하고 행에 대한 작업을 수행할 수 있습니다.행이 정의되지 않았기 때문에 목록에서는 이 작업을 수행할 수 없습니다.

이 모든 것은 이 2차원 구조에 맞는 모든 데이터 집합에 데이터 프레임을 사용해야 함을 의미합니다.기본적으로 열이 변수와 일치하고 행이 단어의 넓은 의미에서 단일 관측치와 일치하는 모든 데이터 집합에 데이터 프레임을 사용합니다.다른 모든 구조에 대해서는 목록이 선택의 방법입니다.

중첩 구조를 원할 경우 목록을 사용해야 합니다.목록의 요소가 목록 자체가 될 수 있으므로 매우 유연한 구조의 객체를 만들 수 있습니다.

이 예를 보십시오.수업을 받기 위해 sapply 대신 apply를 사용한다면 -

apply(iris,2,class) #  function elements are rows or columns
Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
"character"  "character"  "character"  "character"  "character" 

sapply(iris,class) # function elements are variables
Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
"numeric"    "numeric"    "numeric"    "numeric"     "factor" 

언급URL : https://stackoverflow.com/questions/15901224/what-is-difference-between-dataframe-and-list-in-r

반응형