Program Tip

하나의 문에 이름이있는 숫자 형 벡터를 만드시겠습니까?

programtip 2020. 12. 13. 10:29
반응형

하나의 문에 이름이있는 숫자 형 벡터를 만드시겠습니까?


함수 매개 변수의 기본값을 명명 된 숫자로 설정하려고합니다. 하나의 문에서 하나를 만드는 방법이 있습니까? 나는? 숫자 및? 벡터를 확인했지만 그렇게 보이지 않습니다. 아마도 행렬 또는 data.frame을 변환 / 강제하고 하나의 문에서 동일한 결과를 얻을 수 있습니까? 명확하게하기 위해 한 번에 다음 작업을 수행하려고합니다.

test = c( 1 , 2 )
names( test ) = c( "A" , "B" )

벡터 요소의 이름 지정 규칙은 목록과 동일합니다.

newfunc <- function(A=1, B=2) { body}  # the parameters are an 'alist' with two items

대신이 매개 변수가 명명 된 벡터 (에서 제공하는 인수를 처리하는 일종의 함수) 인 매개 변수가되도록하려면 다음을 수행하십시오 apply.

newfunc <- function(params =c(A=1, B=2) ) { body} # a vector wtih two elements

대신 이것이 명명 된 목록 인 매개 변수가되기를 원하는 경우 :

newfunc <- function(params =list(A=1, B=2) ) { body} 
    # a single parameter (with two elements in a list structure

setNames()기능은이를 위해 만들어졌습니다. 에서 설명한 바와 같이 고급 R?setNames:

test <- setNames(c(1, 2), c("A", "B"))

... 부수적으로이 structure함수를 사용하면 이름뿐만 아니라 모든 속성을 설정할 수 있습니다.

structure(1:10, names=letters[1:10], foo="bar", class="myclass")

어느 것이 생산할 것인가

 a  b  c  d  e  f  g  h  i  j 
 1  2  3  4  5  6  7  8  9 10 
attr(,"foo")
[1] "bar"
attr(,"class")
[1] "myclass"

어때 :

 c(A = 1, B = 2)
A B 
1 2 

magrittr은 훌륭하고 깨끗한 솔루션을 제공합니다.

result = c(1,2) %>% set_names(c("A", "B"))
print(result)
A B 
1 2

또한 데이터 프레임을 벡터로 변환하는 데 사용할 수도 있습니다.

df = data.frame(value=1:10, label=letters[1:10])
vec = extract2(df, 'value') %>% set_names(df$label)
vec
 a  b  c  d  e  f  g  h  i  j 
 1  2  3  4  5  6  7  8  9 10
df
    value label
 1      1     a
 2      2     b
 3      3     c
 4      4     d
 5      5     e
 6      6     f
 7      7     g
 8      8     h
 9      9     i
 10    10     j

@joran의 답변을 확장하려면 (이를 주석으로 올바르게 형식화 할 수 없습니다) : 명명 된 벡터가 변수에 할당되면 [함수를 사용하여 부분 집합을 통해 A와 B의 값에 액세스 합니다. 인덱스 번호를 사용하여 부분 집합을 만드는 것과 동일한 방식으로 이름을 사용하여 벡터를 부분 집합으로 만듭니다.

my_vector = c(A = 1, B = 2)    
my_vector["A"] # subset by name  
# A  
# 1  
my_vector[1] # subset by index  
# A  
# 1  

참고 URL : https://stackoverflow.com/questions/7535412/create-a-numeric-vector-with-names-in-one-statement

반응형