Create a sample dataset - values arguments takes alist

# function to create a sample dataset quickly sample.df=function(rows=10,cols=10,names=NA,values=NA){ lookup=list(names=character(cols), values=character(cols)) # lookup=list(names=character(cols), values=character(cols), stringsAsFactors=FALSE) # get all the names if(length(names) > 1 || is.na(names)) { for(i in 1:length(names)) lookup$names[i]=names[i] } for(i in 1:cols) { if(lookup$names[i]=="") lookup$names[i]=i } # get all the values if(length(values) > 1 || is.na(values)) { for(i in 1:length(values)) if(length(names(values)) && names(values)[i]!='') lookup$values[which(lookup$names==names(values)[i])]=values[i] else lookup$values[i]=values[i] } for(i in 1:cols) { if(lookup$values[i]=="") lookup$values[i]="1:10" } mydf='data.frame(' for(i in 1:cols) { mydf<-paste(mydf,"'",lookup$names[i],"'=sample(",lookup$values[i],', size=',rows,', replace=TRUE), ',sep='') } eval(parse(text=paste(mydf, 'check.names=F)', sep=''))) }

sample.df(5,15,letters[1:15],alist('c'=c('M','F'),'o'=1:100))

For all the people out there who want to create Perl hashes out of their R lists:

# convert a R list into a Perl hash list2hash<-function(data,firstcall=TRUE) { output<-''

if(is.list(data)) { if(length(names(data)) > 0) { output<-"{\n" for(i in names(data)) { key<-i # value<-data$i value<-eval(parse(text=paste("data",i,sep="$"))) output<-paste(output,key," => ",list2hash(value,FALSE),"\n",sep='') } output<-paste(output,"},\n",sep='') } else { # make me a vector output<-"[\n" for(i in data) { output<-paste(output,list2hash(i,FALSE),"\n",sep="") } output<-paste(output,"],\n",sep='') } } else { if(is.vector(data) && length(data) > 1) { # I am a vector output<-"[\n" for(i in data) { output<-paste(output,list2hash(i,FALSE),"\n",sep="") } output<-paste(output,"],\n",sep='') } else { # I'm not a couth vector (where couth>1), nor a list - so I must be a single value output<-paste("'",data,"',",sep='') } } if(firstcall) { # if you wanted to prefix the output with '$VAR=' # myoutput<-paste("$",substitute(data),"=",substr(output,0,nchar(output)-2),";\n",sep='') myoutput<-paste(substr(output,0,nchar(output)-2),";\n",sep='') return(cat(myoutput)) } else { return(output) } }

If you'd like to check the validity of an email address, use this function:

validemail<-function(address) length(grep("^[\\w!#\\$%&'*+\\-\\/=?^`{|}~][\\w!#\\$%&'*+\\-\\/=?^`{|}~.]{0,62}[\\w!#\\$%&'*+\\-\\/=?^`{|}~]{1}@([\\w\\d\\-]+\\.)+[\\w\\d\\-]+$",address,perl=TRUE))
Topic revision: r3 - 12 Dec 2007, ColeBeck
 

This site is powered by FoswikiCopyright © 2013-2022 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Vanderbilt Biostatistics Wiki? Send feedback