2012-02-29 3 views
3

클래스 객체를 배열에 넣고 싶습니다. 그래서 여러 클래스 객체를 참조 할 수 있습니다. 그러나 클래스 정보를 배열에 넣으면 사라질 것입니다. 이 문제를 어떻게 해결할 수 있습니까?R로 클래스의 배열을 만들려면 어떻게해야합니까?

+4

대신 목록에서 개체를 넣습니다. 일부 데이터와 코드로 작은 예제를 만들면 누군가가 당신을 도울 수 있습니다. – Andrie

+0

@Andrie 죄송합니다, 죄송합니다. 답변/댓글을 훔쳐 왔습니다. 내 답변을 작성하기 시작했을 때 아무런 의견도 없었습니다 (프로젝트 미팅에서 멀티 태스킹 - wifi하지 않습니다!) –

+0

@ 개빈 : 무엇? 회의 도중에 FB에서 바쁘지 않았 니? :-) –

답변

7

배열은 원 자성 (따라서 하나의 기본 유형의 데이터 만 허용 함)이며 숫자 또는 문자 데이터 만 허용하므로 올바른 도구가 아닙니다. 목록은 R의 제네릭 벡터이므로 목록의 각 구성 요소에는 모든 유형의 객체가 포함될 수 있습니다.

> foo <- 1:10 
> class(foo) <- "foo" 
> bar <- "a" 
> class(bar) <- "bar" 
> 
> obj <- list(foo = foo, bar = bar) 
> obj 
$foo 
[1] 1 2 3 4 5 6 7 8 9 10 
attr(,"class") 
[1] "foo" 

$bar 
[1] "a" 
attr(,"class") 
[1] "bar" 
5

나는 당신이 R의 배열이 다른 개체의 벡터 아니라 다차원 대상이 아닌 R.의 개념 "배열"을 잘못 해석 생각 : 여기

는 두 개의 사용자 정의 S3 클래스의 예입니다 한 클래스의 요소 만 있습니다. list은 원하는 것을 저장하는 데 사용할 수있는 R 개체입니다. 원하는 경우 차원을 제공 할 수도 있으므로 다차원 목록을 얻을 수 있습니다.이 목록은 설명하는 배열에 해당합니다. 이 값은 이중 대괄호로 묶어야합니다.

예 :

# A list with different objects: 
foo <- list("A","B","C","D",1,2,3,4,TRUE,TRUE,FALSE,FALSE) 

# Add dimensions: 
dim(foo) <- c(2,2,3) 
> foo 
, , 1 

    [,1] [,2] 
[1,] "A" "C" 
[2,] "B" "D" 

, , 2 

    [,1] [,2] 
[1,] 1 3 
[2,] 2 4 

, , 3 

    [,1] [,2] 
[1,] TRUE FALSE 
[2,] TRUE FALSE 

# index row 1 col 1 slice 1 
> foo[[1,1,1]] 
[1] "A" 
관련 문제