본문 바로가기
Study/R

쓸만한 R함수 및 코드들 .txt

by FLIEG 2015. 1. 5.
반응형




쓸만한 R함수 및 코드들  


sample(2:8)

##2부터 8까지의 7개의 숫자 (2, 3, 4, 5, 6, 7, 8)를 순서를 섞어주는것.

##순서 섞기에 불과함;;;

sample(1:10) : 1~10중에 랜덤으로 수를 10개 뽑아서 벡터로 반환

sample(5:10) : 5~10중에 랜덤으로 수를 5개 뽑아서 벡터로 반환

sample(x=1:100, size=10) : 주어진 자료벡터(x)에서 크기10인 표본을 비복원추출한다. (1:?와 size=?의 ?가 같으면 복원추출)



fivenum() : 다섯수치요약


hist(x, freq=F, nclass=10, main="Uniform", ylim=c(0, 1.2))

hist(y, nclass=20, probability=T, xlim=c(~~), ylim=c(~~), main="~~")

nclass : 구간수의 '배율'을 지정! 기본값은 10이며, 20을 주면, 2배의 구간수를 갖는 히스토그램을 얻는다.

probability = T : 세로축을 .. '빈도'로 안하고.... 그 빈도들로 만든 '확률'을 넣겠다는것. 즉 확률버전의 히스토그램!



abline(h=1, col="red", lty="dotted", lwd=2)



table() : classifying factors들을 세고, 테이블로써 출력해준다. 꼭 문자변수가 아니어도... 0, 1, 2, 3, 4, 5, ... 이런식의 숫자변수도 table을 만들어준다.


sum(z==0)  : z의 벡터들의 값 중에서 0과 일치하는 원소의 개수를 총 합해서 뱉어내는것.  (!!sum함수 속에 조건문 넣는게 굉장히 유용. sum이긴하지만, 사실상 Excel의 countif역할을 하게 된다)

sum( (x > 0)  &  (y > 0) )     : x의 벡터도 0초과, y의 벡터도 0을 초과하는.. 동시에 초과하는 paired obs들의 개수를 산출

ex:)

x <- runif(5,-1,1)

y <- runif(5, -1, 1)

x;y;

sum((x>0) & (y>0))





table( z변수 관련한 조건문)  : z 벡터 내의 원소들 중에서 조건을 만족/불만족 두 가지로 나누어서 2열짜리의 도수table만들어내기

table(z %% 2) : 2로 나눈 나머지가 0인 원소들갯수 ,      나머지가 1인 원소들 갯수를 도수table로 만들어내기 (홀짝 가르기!)

                   z %% 2는 조건문이 아님... 그저 2로 나눈 나머지라는 연산일뿐임;



&는 AND이고, |가 OR이지

[]는 벡터 내의 원소(elment)를 집어낼때!

outlier <- x[x < fence.1 | x > fense.2]     즉 []를 쓰는거 매우 유용. 




as.matrix(df) : 이건 데이터프레임을 matrix로 만들때 쓰는거구나. as.matrix()로 초기화하는건 없음;;;

matrix()로 초기화하는거임...



nrow(A) : A행렬의 행의 개수 반환

ncol(A) : 


colnames(A) <- c(~,~,~,~)



par() : 그래픽 출력에 관련한 모수들을 규정하는 것. 모수에는new도 있고 mfrow도 있고... cex도 있고...

par(oma = c(2, 2, 2, 2)) : 여백을 4군데 2씩 주는것임


scale() : ( x_i - 가운데수 )로 모든 x_i들을 바꿔주는것. demeaned화 시키는거랑 같음





apply(M, 1, sum) : 행(1)에 sum을 적용  , 반환되는것은 행개수 만큼의 sum.     Horizontal sum을 하기.



seq(-6,6,0.1) : -6부터 6까지의 수열을 만드는데, 그 등차는 0.1.


dnorm(c(-1,0,1)) : density를 반환한다! 특정 점에서의 density는 모두 0이긴 하지만.. 그래도 어느정도 구간을 만들어서 density를 계산해주는듯. 0~1사이의 숫자 3개를 반환해준다.

dt , dunif, dgamma, dexp 등등등 다 있다.  (각각, t분포, unif분포, gamma분포, exp분포)




자주 실수하던 것들

HPnumb$성별 <- levels(c("여자", "남자"))  ####잘못된 용법임

levels(HPnumb$성별) <- c("여자", "남자") : 이게 맞다!!!!! 그리고 이건 아예 obs값을 바꿔주는거임! 성별 열은 (F, M, M, F, ...)인데

이를 통해 성별 열은 (여자, 남자, 남자, 여자, ....)로 아예 바뀌어버림.





통계그래프----------

lines(c(-1,1),  c(2,3)) : y=0높이에서, x:-1~1구간으로 선을 긋고 2~3구간으로 선도 긋는것. [X]

: (-1,1) 점과 (2,3)점을 직선으로 잇는것임.



abline(v=-1) : x = 0이라는 vertical '직선'을 긋는다.

abline(h=2, lty = "dotted") : y = 2라는 horizontal '직선을 긋는다. 단 점선으로!    lty : line type의 약자... plot()함수에 lty="dotted"들어가면.. 실선이 아닌 점선으로 그림을 그려낸다.



plot(z, type="n") : type="n"은.. obs들을 점으로 찍지 않고 투명점으로 찍는것임.


points(2, 3, cex=3)     : 2,3자리에 크기가 3인 점을 찍기.


pie()파이차트 그리기      : LN에 자세히 있으니 잘 보자. col=c(~,~,~), labels=c(~,~,~)가 좋아보임.


ifelse(A, B, C)    : A조건에 맞으면 B를 반환, A조건이 틀리면 C를 반환 ★★


boxplot()의 옵션 중 !!!!! horizontal = T하면.. 누운형태의 boxplot을 그릴 수 있다.




windows(height=6, width=2.5)      !! 독자적인 윈도우를 띄운다. 


legend("topright", c("gems", "gold", "silver"), pch=1:3)  : factor별로 plot된 그림에다가,, 범례추가하는데.. topright위치에 추가하며, factor의 levels가 gems, gold, silver인 각 obs에 대해 점을 1번타입, 2번타입, 3번타입을 표시한다.)






LOOP들


for (i in 1:~) { }

while ((조건1) & (조건2))  { }

if (조건) { }


★R은 for와 while만 알아도 거의 충분.

do는 사실, do~while문으로 쓸 수 있지만

break만 알면 while만 알아도 만능임.


for(i in 1:100){

print("안녕하세요~")

print(i*i)

}


i <- 1; my.mat <- matrix(NA, N, 3)

while(i <= N){

z <- work.on.gene(i)

my.mat[i,] <- summary(z)

i <- i+1

}



반응형

'Study > R' 카테고리의 다른 글

R-Cookbook 소개  (0) 2015.01.06
R studio 소개 (R 프로그래밍을 좀 더 간편하게!)  (0) 2014.10.03