Dear Rees Morrison,

Re:

(...)
> 
> What additional code would create a table output, with the function name in 
> the left column, sorted alphabetically within a pattern, and the pattern of 
> the function in the column to the right.  Users could then sort by those 
> patterns, rename some to suit themselves, etc.
(...)


The version below creates a tab-delimited table with 3 columns: seach string, 
package name and function name. 
Can be imported e.g. in Excel. Maybe not elegant, but seems to work (however: 
test it!).
Column order can be changed by changing the printing order of newhits[ ,1]  ,2 
and ,3.

In addition, Liviu Andronic's suggestion to use the package "sos" (strange 
name, but good tip) seems also interesting.

Best wishes,


Franklin Bretschneider
--
Dept of Biology
Kruytgebouw W711
Padualaan 8
3584 CH Utrecht
The Netherlands

- - - - - - - - - - - - - - - - - 

#  categorize functions 2.R
#  Franklin Bretschneider
#  after R-help, R. Michael Weylandt
#  08-04-2013
#  this version produces a tab-delimited text file with 
#  the columns: (search) pattern; (in which) package and function (name).
#  ======================================================================
allfuncs = unlist(sapply(search(), ls)) 
n = length(allfuncs)
allnames = names(allfuncs)
package.names = substr(allnames, start=9, stop=nchar(allnames))
allfuncs = cbind(package.names, allfuncs)
#  which patterns to search: can be customized
patterns = c("print", "plot", "axes", "axis", "color", "file", "read", "write", 
"load", "save","wave", "image", "table", "data", "apply", "title", "matrix", 
"names")
patterns = sort(patterns)  #  optional
k = length(patterns)
#  open output file
options(verbose=FALSE)
zz <- file("all functions.txt", open="wt")
sink(zz, type="output")
#  print the output to the file
cat("\n\n ")
cat("pattern\tpackage\tfunction\r")
for (i in 1:k) {
        cat("\n ")
        hits = allfuncs[grep(patterns[i], allfuncs[,2], ignore.case=TRUE),2]
        hitpkg = allfuncs[grep(patterns[i], allfuncs[,2], ignore.case=TRUE),1]
        hitpkg = gsub("\\d", "", hitpkg)
        labels = rep(patterns[i],length(hits))
        newhits = cbind(labels, hitpkg, hits)
                newhits =newhits[order(newhits[,3]),]  # sort data frame on 
basis of one column
        cat(sprintf(fmt = "%s\t%s\t %s\r", newhits[,1], newhits[,2], 
newhits[,3]))
        }
cat("\n\n")
## back to the console
sink(type="output")
close(zz)  #  close the file
print("Finished")





        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to