2009-07-09 4 views

답변

57

R 목록은 해시 - 이름으로 액세스 할 수있는 개체의 벡터로 생각할 수 있습니다. 이 방법을 사용하면과 같이 목록에 새 항목을 추가 할 수 있습니다 : 여기에 우리가 많은 루프 변수에 저장된 값을 사용하여 같은 목록의 위치를 ​​액세스 할 변수 키에 저장된 문자열을 사용

key <- "width" 
value <- 32 

mylist <- list() 
mylist[[ key ]] <- value 

전 를 통해 벡터에 액세스 할 수 :

vector[ i ] 

결과 것은 : R의

myList 
$width 
[1] 32 
+2

감사 : 또한

mylist<-list("width"=32)

예를 참조하십시오! 아직 색인 생성 연산자를 이해하지 못합니다. 여기에 설명되어 있지만 http://cran.r-project.org/doc/manuals/R-lang.html#Indexing에서 보여준 사용법은 설명되어 있지 않습니다. 이것이 어디에 설명되어있는 온라인 의사가 있습니까? – Frank

+0

값이 기본 유형 (예 : 단일 숫자, 문자 등) 인 경우 x <- c (1, 4, 2, 5)와 같은 일반 배열을 사용할 수 있습니다. 그런 다음 이름 (x) <- c ('a', 'b', 'c', 'd')와 같이 각 색인 값에 이름을 할당하십시오. – JAponte

13

목록 요소는 이름을 지정할 수 있습니다. R이 난 목록입니다이 코드

> l$somename=something 

을 발견하면 따라서 귀하의 경우에는 단지

> mylist = list() 
> mylist$width = value 

을한다. 요소에 뭔가를 추가하고 이름을 somename으로 지정합니다. 그것은 다음

> l[["somename"]] 

또는

> l$somename 

를 사용하여 액세스 할 수 있습니다 이름은 명령 이름을 변경할 수 있습니다

> names(l)[names(l)=="somename"] <- "othername" 

를 또는 요소의 위치에서 이제 경우 목록 :

7

setNames() 내장 함수를 사용하면 주어진 키 및 값 목록에서 해시를 쉽게 만들 수 있습니다. (더 나은 제안을 닉 K에게 감사드립니다.)

사용법 : hh <- setNames(as.list(values), keys)

예 : 다음 키를 통해 값을 접근

players <- c("bob", "tom", "tim", "tony", "tiny", "hubert", "herbert") 
rankings <- c(0.2027, 0.2187, 0.0378, 0.3334, 0.0161, 0.0555, 0.1357) 
league <- setNames(as.list(rankings), players) 

쉽습니다 :

league$bob 
[1] 0.2027 
league$hubert 
[1] 0.0555 
+2

'league2 <- setNames (as.list (rankings), players)'는 약 4.5 배 빠르며, 다음과 같이 사용하기 때문에 x [ 'a'], x [ 'b'] 등으로 참조 할 수 있습니다. 벡터화 된 함수는 그것을하기위한 좀 더'R' 방법 일 것이다. (데모'microbenchmark :: microbenchmark (리그 <- as.hash (선수, 랭킹), 리그 2 <- setNames (as.list (랭킹), 선수), times = 1000)') –

+0

@NickK : 동의,'setNames' 훨씬 더 좋은 해결책입니다! 필자는 사용자 정의 함수를이 함수로 대체했습니다. 건배! –

관련 문제