R Syntax Examples 1
R Syntax Examples 1
R PROGRAMMING ENVIRONMENT
DEAL WITH OBJECTS:
ls()
length(ls()) #how many objects in memory?
remove(list = ls()) #remove all objects
remove(“dataset”) #remove a particular object
LOAD A SCRIPT
source("C:/Program Files/R/functions/mckeller/mckeller.functions.R")
CHANGE DIRECTORY
getwd() #get the current working directory
setwd("c:/temp")
#ALTERNATIVE
system.time(for (i in 1:runs){perm_results[i,] <- matrix(t(permstats[1:2,]),nrow=1) })
IMPORTING/EXPORTING
EXPORT DATA INTO A SPECIFIC FOLDER & FORMAT
write.table(dataset, file = "C:/temp/MyData", append = FALSE, quote = TRUE, sep = "&", eol = "\n", na
= "-999", dec = ".", row.names = FALSE, col.names = TRUE, qmethod ="double")
SAVE FILES FROM SPSS THAT ARE READABLE IN S-PLUS (IN SPSS LANGUAGE):
##Import directly from an excel file – OR -
##Always save as *.dbf, not text! Make sure to have S-Plus see it is a dbf file (filetype) before importing.
SAVE TRANSLATE OUTFILE='C:\Matts Folder\RESEARCH\S-Plus\attempt3.db4'/TYPE=TAB /FIELDNAMES
/KEEP=nmcode2 sex weeksbf k5 k1 k8 zcd_sad TO zcd_slp f.sad2 TO f.noeat2 /RENAME zcd_sad=zsad.
##BUT THE ABOVE SCREWS IT UP… R READS DOWN COLUMN BY COLUMN, SO WE MUST TRANSPOSE 1ST:
heads <- read.table("C:/temp/colnames.study1")
heads2 <- as.matrix(t(heads)) #the data frame must be a matrix to change cols & rows
dim(heads2) <- c(1,50)
study1 <- read.table("C:/temp/study1.txt")
names(study1) <- heads2
EXPLORING DATA
MULTI-WAY IF/THEN STATEMENT:
x <- c(1,2,3,4,5)
if (x[1]==2) a <- 3 else if (x[1]==3) a <- 4 else if (x[1]==1) a <- 6 else a <- NA
MEANS MATRIX
means.mat <- matrix(nrow=3, ncol=4)
ccc <- c("Belly","Poli","Admin")
for(col in 1:4){
switch (col,
"1" = for(i in 1:3) means.mat[i,col] <- mean(Read[grp==ccc[i]]),
"2" = for(i in 1:3) means.mat[i,col] <- mean(Dance[grp==ccc[i]]),
"3" = for(i in 1:3) means.mat[i,col] <- mean(TV[grp==ccc[i]]),
"4" = for(i in 1:3) means.mat[i,col] <- mean(Ski[grp==ccc[i]])
)}
ROW MEANS
sympavg <- matrix(0,nrow(zsymptoms),18)
for (i in 1:18){sympavg[,i] <- rowMeans(dataset[1:nrow(dataset),c(seq(i,18*6,by=18))], na.rm =TRUE)}
RECODE DATA
new <- matrix(0,nrow(dataset),6)
new <- ((dataset[,22:27]==1)*1 + (dataset[,22:27]==2)*2 + (dataset[,22:27]==3)*8 +
(dataset[,22:27]==4)*3 + (dataset[,22:27]==5)*4 + (dataset[,22:27]==6)*7 +
(dataset[,22:27]==7)*5 + (dataset[,22:27]==8)*6 + (dataset[,22:27]==9)*9 +
(dataset[,22:27]==10)*7 + (dataset[,22:27]==11)*8 + (dataset[,22:27]==12)*8)
SUBSET DATA:
dataset.subset <- dataset[seas=="spring" | seas=="summer",] #only for spring & summer
dataset.subset2 <- dataset[var5 != NA,] #only non-missing on var5
dataset.subset2 <- dataset[dataset[,5] != NA,] #same thing
dataset3 <- dataset[,-c(5:20)] #all columns except 5:20
dataset4 <- dataset[,c(1,4,23)] #only columns 1,4, &23
cbind.data.frame(categ2, daysbf, CONSV)[categ2!="other" & categ2 != "nosit",]
ORDER/SORT A DATASET
cbind(order(dataset$var1),dataset[order(dataset$var1),]) #1st column is original row#, 2nd is its value
a <- c(1,2,3,4,5,6,6,5,4,3,2)
b <- c(5,4,3,2,1,2,3,4,5,6,7)
c <- cbind(a,b)
c[order(a),]
USE CBIND.DATA.FRAME NOT CBIND IF WANT TO USE VARIABLE NAMES FOR SOMETHING
dataset <- cbind.data.frame(dataset[,],y[,])
GIVE VARIABLES IN DATA FRAME ALTERED NAMES FROM ANOTHER DATA SET
winsymp <- as.data.frame(winsymp)
names(winsymp) <- paste("S",names(dataset[,42:149]),sep="")
FUNCTIONS
SWITCH
for(i in c(-1:3,9,11)) print(switch(i, 1,2,3,4,5,6,7,8,99,10,"this is eleven"))
switch("a","a"=1,"cc"=2,"d"=3)
GRAPHING
PLOT LEVERAGES WITH TEXT:
lm.model <- lm(var1~var2+var3)
x <- model.matrix(lm.model)
plot(hat(x), type="n", ylab="Leverages")
text(hat(x), labels=as.character(SUBNUM))
SAVE ALL GRAPHING OBJECTS YOU MAKE UNTIL USE “DEV.OFF” CMD
pdf("C:/temp/new.pdf", horizontal=FALSE, height=5, pointsize=10)
matplot(cor(data1[,c(1,8:13)])[2:7,1])
dev.off()
CHANGE THE AXIS TICK MARK LABELS TO DEFAULT FOR Y AND A:F FOR X
matplot(1:6, x[c(1:6)], type="b", ylim=c(.75,.9), cex.main=.85,lwd=3, pch=19,xlim=c(.5,6),axes=FALSE)
axis(1,labels=c("a","b","c","d","e","f"))
axis(2)
FIND THE X & Y LIMITS ON YOUR GRAPH, FOR USE IN PLACING ITEMS IN GRAPH
lim <- par("usr")
text(lim[1]+(.46*(lim[2]-lim[1])),lim[3]+(.93*(lim[4]-lim[3])),"Death", adj=1)
text(lim[1]+(.5*(lim[2]-lim[1])),lim[3]+(.93*(lim[4]-lim[3])),"vs", adj=0.5)
text(lim[1]+(.54*(lim[2]-lim[1])),lim[3]+(.93*(lim[4]-lim[3])),"Failure", adj=0)
QQ PLOT
pdf("C:/temp/New.pdf", horizontal=FALSE, height=5, pointsize=10)
for (k in 1:10){qqplot(liab[,k],rnorm(10000))}
dev.off()
#ALTERNATIVE
text(-.5,-.5, expression(bold(M[1])*":"*hat(MPG)))