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))