All Downloads are FREE. Search and download functionalities are using the official Maven repository.

prerna.reactor.frame.r.TransposeReactor Maven / Gradle / Ivy

The newest version!
package prerna.reactor.frame.r;

import prerna.ds.r.RDataTable;
import prerna.sablecc2.om.PixelDataType;
import prerna.sablecc2.om.PixelOperationType;
import prerna.sablecc2.om.ReactorKeysEnum;
import prerna.sablecc2.om.nounmeta.NounMetadata;
import prerna.util.usertracking.AnalyticsTrackerHelper;
import prerna.util.usertracking.UserTrackerFactory;

public class TransposeReactor extends AbstractRFrameReactor {

	public TransposeReactor() {
		this.keysToGet = new String[] { ReactorKeysEnum.FRAME.getKey() };
	}
	
	@Override
	public NounMetadata execute() {
		/**
		 * This reactor transposes the frame No inputs are needed
		 */

		// get frame
		// use init to initialize rJavaTranslator object that will be used later
		init();
		RDataTable frame = (RDataTable) getFrame();

		// get table name
		String table = frame.getName();

		// define r script string to be executed
		String script = table + " <- " + table + "[, data.table(t(.SD), keep.rownames=TRUE)]";
		// execute the r script
		frame.executeRScript(script);
		this.addExecutedCode(script);

		// NEW TRACKING
		UserTrackerFactory.getInstance().trackAnalyticsWidget(
				this.insight, 
				frame, 
				"Transpose", 
				AnalyticsTrackerHelper.getHashInputs(this.store, this.keysToGet));
		
		// with transpose - the column data is changing so we must recreate metadata
		frame.recreateMeta();
		return new NounMetadata(frame, PixelDataType.FRAME, PixelOperationType.FRAME_DATA_CHANGE, PixelOperationType.FRAME_HEADERS_CHANGE);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy