Skip to content

Instantly share code, notes, and snippets.

@Oreotrephes
Last active August 29, 2015 14:10
Show Gist options
  • Select an option

  • Save Oreotrephes/35e7052d54f97c7eca0f to your computer and use it in GitHub Desktop.

Select an option

Save Oreotrephes/35e7052d54f97c7eca0f to your computer and use it in GitHub Desktop.
vectorization fail
summaryfunction<-function(x){
a<-if(is.na(x)){"NA"} else if(x<0){"-"} else {"+"}
b<-if(is.na(x)){"NA"} else if(abs(x)<0.001){"***"} else if(abs(x)<0.01){"**"} else if(abs(x)<0.05){"*"} else{" "}
paste(a,b)
}
#individually are fine
summaryfunction(listy[1])
summaryfunction(listy[2])
#but together breaks
listy<-c(0.005,-0.049)
summaryfunction(listy)
#mapply makes it work
mapply(summaryfunction,output)
@tylerritchie

Copy link
Copy Markdown
summaryfunction<-function(x){
  b<-a<-x
  a[is.na(x)]<-"NA"
  a[!is.na(x) & x < 0]<-"-"
  a[!a %in% c('NA', '-')]<-"+"
  b[is.na(x)]<- "NA"
  b[!is.na(x)]<- " "
  b[!is.na(x) & abs(x)<0.05]<- "*"
  b[!is.na(x) & abs(x)<0.01]<- "**"
  b[!is.na(x) & abs(x)<0.001]<- "***"
  paste(a,b)
}

@tylerritchie

Copy link
Copy Markdown
datas<-c(-.5, -.05, -.01, -.001, -.0001, .0001, .001, .01, .05, .5, NA)

summaryfunction<-function(x){
  signs<-gsub("\\d", "", as.character(sign(x)), perl=TRUE)
  significance<-cut(abs(x), c(0, 0.001, 0.01, 0.05, Inf), labels=c("***", "**", "*", ""), right=FALSE)
  paste(signs, significance)
}

summaryfunction(datas)

@Oreotrephes

Copy link
Copy Markdown
Author

summaryfunction2<-function(x,y){
signs<-substr(as.character(sign(x)),1,1)
signs[signs=="1"]<-"+"
significance<-cut(abs(y), c(0, 0.001, 0.01, 0.05, Inf), labels=c("**", "__", "", ""), right=FALSE)
paste(signs, significance)
}

datas1<-c(1,2,3)
datas2<-c(0.005,0.05,0.04)

summaryfunction(datas)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment