[R-gui] your favourite spreadsheet-like data viewer or editor?

Ian Fellows ian.fellows at stat.ucla.edu
Thu Nov 11 22:12:29 CET 2010


Ilhami,

You have done a great job with this package. After the update, it works very smoothly under JGR. Keep up the good work.

Some things I liked:

1. I really like the ability to filter columns to obtain subsets. It works much more smoothly and intuitively than Deducer Subset dialog.
2. The ability to import .xls and .xlsx files is key and great.
3. I liked seeing the R code behind the data import/filter

A few thoughts/suggestions:

1. I couldn't find any documentation about which file types are supported by the data import panel (i.e. speedR.importany).

2. The following code appears at the beginning of the Filer Code block:

installed.pkgs = installed.packages()
required.pkgs = c("rJava","iplots")
toBeInstalled = required.pkgs[!(required.pkgs %in% installed.pkgs[,1])]
if (length(toBeInstalled) != 0){
	install.packages(toBeInstalled)
}

This code is more book keeping than user relevant. Perhaps you should hide it from the user.

3. Since this is a Java based project, it can be nicely integrated in with JGR and Deducer. You can add menu integration with:

if(exists(".jgr") && .jgr){
	jgr.insertMenuItem("Packages & Data","Filtering Data Editor","speedR()",2)
}

if(exists(".deducer") && !is.null(.deducer) ){
       deducer.addMenuItem("Filtering Data Editor",,"speedR()","Data")
}

4. It would be nice if the Filter Code was executed in the console as if the user typed it in when finnish is clicked. This can be accomplished (when Deducer is loaded) with something like:

engine.parseAndEval("J(\"org.rosuda.deducer.Deducer\")$execute(\"2+2\")");

Where engine is your REngine and 2+2 is what you want to execute in the console.



At one point I did get the following stack trace after I hit finish, though everything still worked fine:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 7 >= 0
	at java.util.Vector.elementAt(Vector.java:427)
	at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277)
	at sun.swing.SwingUtilities2.convertColumnIndexToModel(SwingUtilities2.java:1778)
	at javax.swing.JTable.convertColumnIndexToModel(JTable.java:2551)
	at javax.swing.JTable.isCellEditable(JTable.java:2734)
	at org.jdesktop.swingx.JXTable.isCellEditable(JXTable.java:1473)
	at org.jdesktop.swingx.JXTable.setValueAt(JXTable.java:1439)
	at at.ac.arcs.tablefilter.cell.FilterCellEditor$1.actionPerformed(FilterCellEditor.java:62)
	at javax.swing.JTextField.fireActionPerformed(JTextField.java:492)
	at at.ac.arcs.tablefilter.cell.JXFilterField.stopTimer(JXFilterField.java:140)
	at at.ac.arcs.tablefilter.cell.JXFilterField$2.actionPerformed(JXFilterField.java:111)
	at javax.swing.Timer.fireActionPerformed(Timer.java:271)
	at javax.swing.Timer$DoPostEvent.run(Timer.java:201)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:633)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


I tried to open an unsupported file type and got:

ov 11, 2010 12:49:34 PM at.ac.ait.speedr.importwizard.steps.CSVDataImportWizardStep$StreamFeeder run
SEVERE: Un-terminated quoted (") field at end of CSV line
java.io.IOException: Un-terminated quoted (") field at end of CSV line
	at au.com.bytecode.opencsv.CSVParser.parseLine(CSVParser.java:255)
	at au.com.bytecode.opencsv.CSVParser.parseLine(CSVParser.java:168)
	at au.com.bytecode.opencsv.CSVReader.readNext(CSVReader.java:237)
	at at.ac.ait.speedr.importwizard.steps.CSVDataImportWizardStep$StreamFeeder.run(CSVDataImportWizardStep.java:338)



Ian



More information about the R-SIG-GUI mailing list