UFO ET IT

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

ufoet 2020. 11. 21. 08:38
반응형

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


차이 무엇입니까 dataframe 하고 목록 에서 R? 언제 사용해야합니까? 반복하기가 더 쉬운 것은 무엇입니까?

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

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

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


질문은 어떤 사람들이 생각하는 것처럼 어리석지 않습니다. 나는 그 차이로 고군분투하는 많은 사람들과 어디에 사용할지 알고 있습니다. 요약 :

목록은 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

반응형