2013-04-15 3 views
1

저는 R이 매우 새롭고 객체의 datamembers 및 속성을 참조 할 때 적절한 언어가 확실하지 않습니다. Java에서 객체 지향 프로그래밍 언어 배경을 가지고 있으므로 Java의 마음에있는 datamembers/attributes를 언급하고있을 것입니다. 어쨌든, 다음 내가 매트릭스 matClust1이 내가했던 가정 :R 데이터 멤버 및 속성

ids = vector() 
for(i in 1:size)    #size is the number of rows in matClust1 
{ 
    ids = c(ids, "exp") 
} 

attr(matClust1, "clustID") <- ids 

나는 위의 생각 "exp"matClust1에 속성/각 행 벡터의 DataMember를 설정한다. 그 이유는 idsmatClust1에 행만큼 많은 항목을 포함하도록 작성 되었기 때문입니다. 그래서, 나는 다음과 같은 코드로이 속성/DataMember를 액세스 할 수 있도록하고 싶습니다 :

matClust1.clustID[2]   #get the clustID of row vector in matClust1 

은 분명히 . 운영자는이 작업을 수행이나 $ 연산자를 수행하지 않습니다.

  1. 어떻게 R에서이 기능을 수행 할 수 있습니까?

편집 : 나는 이미 속성이 rownames 설정하고 내가 정말 찾고 있어요 것은 rownames처럼 작동하는 또 다른 변수로 한.

+0

(http://www.burns-stat.com/pages/Tutor/ R_inferno.pdf), 특히 Circle 2 + 3 (자바 배경에서 온 경우). 그것은 당신에게 많은 고통을 덜어 줄 것입니다. – joran

+1

단지 빠른 팁 -'.'는'R'의 연산자가 아닙니다. 그것은 단지 또 다른 성격입니다. '.'라고 생각할 때'_' (밑줄) –

+0

@RicardoSaporta : 그것은 부분적으로 만 사실입니다. 진실은 데이터 객체 명명에 제한됩니다. S3 디스패치 시스템을 사용하는 함수의 이름 지정은 "."에 의존합니다. 특별한 의미가 있습니다. 그러나 OP의 경우, 이는 Java에서 숙련 된 사고 프로세스로 잘 변환되지 않는 함수 전달 방법입니다. –

답변

2

대신 data.frame 또는 data.table을 원할 수도 있습니다.

예. 아마도, 사용자가 [R 지옥]을 판독한다 _definitely_ '()'를 사용 rownames 포함하는 특정 용액 이외에

df = data.frame(matClust1) 

# create a new column and assign whatever to it: 
df$clustID = "exp" 

# use it however you like 
df$someOtherColumn = paste(1:dim(df)[1], df$clustID)