2015-02-05 7 views
0

문자열의 벡터가 있고 각 문자열이 데이터 프레임의 변수에 해당 할 때 어떻게 해당 표준 편차의 벡터를 쉽게받을 수 있습니까? 루프보다 나은 점이 있습니까? 예를 들어 아래 벡터에 주어진 각 변수의 표준 편차를 계산하십시오.

mtcars를 사용하여 :

attach(mtcars) 
string_vector <- ("mpg", "cyl", "disp") 

내가 표준 편차를 계산하는 방법을 알고

sd(mpg) 
# 6.026948 
sd(cyl) 
# 1.785922 
sd(disp) 
# 123.9387 

내가 결국 원하는 것은 당신은 sapply을 사용할 수 있습니다

sd_vector <- c(sd(mpg), sd(cyl), sd(disp)) 
sd_vector 
# 6.026948 1.785922 123.938694 
+2

'apply (mtcars [, string_vector], 2, sd)'? 'attach'를 사용하지 마십시오. – Roland

+0

'attach'는 일러스트레이션 목적으로 사용되었습니다. – MERose

답변

4

입니다 :

> string_vector <- c("mpg", "cyl", "disp") 
> sapply(mtcars[string_vector], sd) 
     mpg  cyl  disp 
    6.026948 1.785922 123.938694 
+1

'sapply' 또는'vapply'가 op에 바람직합니다. – Roland

+0

나에게 어떤 차이가 있습니까? – MERose

+1

위에서 볼 수 있듯이'sapply'는 원자 벡터를 반환합니다. 'vapply'는 또한 원자 벡터를 반환합니다. 즉,'vapply (mtcars [string_vector], sd, numeric (1))'을 시도하십시오; 'lapply'는 목록을 반환합니다. 자세한 정보는 Hadley의 우수한 lapply-sapply-vapply 설명을 확인하십시오. http://adv-r.had.co.nz/Functionals.html#functionals-loop –

관련 문제