write empty data csv2 create r dataframe data.table

empty - Vea rĂ¡pidamente un R data.frame, vector o data.table en Excel



write.csv r (6)

Escribí esta función para lograr esa tarea. Lo llamo "escribir archivo temporal" o "wtf". Solo funciona en Windows si tiene archivos csv asociados con Excel.

Puede ver el código en PBSmodelling :: openFile para ver cómo adoptarlo en diferentes sistemas operativos.

wtf = function (x) { tempFilePath = paste(tempfile(), ".csv") tempPath = dirname(tempFilePath) preferredFile = paste(deparse(substitute(x)), ".csv", sep = "") preferredFilePath = file.path(tempPath, preferredFile) if(length(dim(x))>2){ stop(''Too many dimensions'') } if(is.null(dim(x))){ x = as.data.frame(x) } if (is.null(rownames(x))) { tmp = 1:nrow(x) }else { tmp = rownames(x) } rownames(x) = NULL x = data.frame(RowLabels = tmp, x) WriteAttempt = try( write.table(x, file=preferredFilePath, quote=TRUE, sep=",", na="", row.names=FALSE, qmethod="double"), silent = TRUE) if ("try-error" %in% class(WriteAttempt)) { write.table(x, file=tempFilePath, , quote=TRUE, sep=",", na="", row.names=FALSE, qmethod="double") shell.exec(tempFilePath) } else { shell.exec(preferredFilePath) } } wtf(df) wtf(mat) wtf(v)

si abre el mismo objeto varias veces, seguirá funcionando gracias al manejo de errores, pero tendrá un nombre temporal complicado.

wtf(df) df$MoreData = pi wtf(df)

¿Cómo se abre rápidamente pequeños objetos de mesa / vector R en Excel?

Por ejemplo, supongamos que tiene los siguientes tres objetos que desea ver en Excel:

## A data frame with commas and quotes df = data.frame( area = unname(state.x77[,''Area'']), frost = unname(state.x77[,''Frost'']), comments = "Ok for a visit, but don''t want to live there", challengeComments = c(''"'', ''""'')) row.names(df) = state.name df = df[1:10, ] df[''California'', ''comments''] = "Would like to live here" ## A Matrix mat = matrix(rnorm(100), 10) ## A Vector v = 1:10


Perdón por publicidad desvergonzada ... Puedes probar mi paquete http://cran.r-project.org/web/packages/excel.link/index.html Parece que:

library(excel.link) xlrc[a1]=df

Depende del paquete Omegahat RDCOMClient por lo que es necesario instalarlo desde el origen:

install.packages("RDCOMClient", repos = "http://www.omegahat.org/R") install.packages("excel.link", repos = "http://cran.at.r-project.org",type="source")


Use write.csv(x, "clipboard") y pegue en excel.


Lo uso a menudo para pegar una tabla de datos en Excel:

write.table(x, "clipboard", row.names=F, sep=''/t'')

Y para copiar una (sub) tabla de Excel en R, haga esto (suponiendo que la tabla tenga una fila de encabezado):

read.csv(''clipboard'', sep=''/t'')


Escribí una función para Windows. Pero probablemente también funcione en otros sistemas operativos.

Crea archivos temporales en C: / Users / ... / Documents / Rview y los abre con browseURL (). Puede abrir hasta 99 archivos en paralelo. Puede elegir fácilmente qué dimmanentes se deben mostrar por argumento "nombres". La función agregará ''before +, -, = in col / rownames para que se muestre correctamente en Excel.

Personalmente prefiero la solución que usa Sys.getenv ("TMP") sobre el uso de tempfile () porque tempfile () estropeará su carpeta de archivos temporales después de un cierto período de tiempo.

Consulte las descripciones de los argumentos en la parte superior del código para obtener más información.

# This function creates a CSV file from a data.frame/matrix and opens it with the default CSV-opening-program # of the computer. # # x = data.frame/matrix # names = dimnames to be saved in the file. "col"=colnames, "rowcol"=rownames&colnames, "row"=rownames, "no"=no dimnames # nrows = maximum number of rows to be saved (for higher speed with large datasets) # if n=-1, all rows will be displayed.-> see also the help for read.table() # ncols = maximum number of columns to be saved (for higher speed with large datasets) # folder = directory, where the temporary file should be saved. # If NULL an accessible folder in C:/Users/.../Documents will be created automatically. # quote = should quotes be written into the csv File? -> see also the help for write.table() # na = how should NA values be displayed in the csv File? -> see also the help for write.table() # openfolder = Should the folder with all temporary files be opened after having created the file? view <- function(x, names=c("col","rowcol","row","no"), nrows=10000, ncols=1000, folder=NULL, quote=FALSE, na="NA", openfolder=FALSE, ...){ names <- match.arg(names) if(is.null(dim(x))) { x <- as.matrix(x) } if(is.null(colnames(x))) colnames(x) <- paste0("V",1:ncol(x)) if(nrows<0) nrows <- nrow(x) if(ncols<0) ncols <- ncol(x) # Shrink data.frame such that it can be saved & viewed faster. nrows <- min(nrow(x), nrows) if(nrows!=nrow(x)) x <- x[1:nrows,,drop=FALSE] ncols <- min(ncol(x), ncols) if(ncols!=ncol(x)) x <- x[,1:ncols,drop=FALSE] # Define paths # If is.null(folder), wird ein temporaerer Ordner im Windows-Dateisystem angelegt. if(is.null(folder)) { folder <- paste0(Sys.getenv("TMP"), "//Rview") suppressWarnings( dir.create(folder) ) } # Wenn am Schluss des Pfades kein "/" angefuegt wurde, wird dies gemacht: if( !substr(folder,nchar(folder),nchar(folder))%in%c("/","//") ) folder <- paste0(folder, "//") pfad0 <- folder name <- "Rview_tmp" nr <- "01" csv <- ".csv" # Check if there are existing files in the folder fil <- list.files(pfad0) # If there are no files in the folder, use the default save path. if(length(fil)==0){ pfad1 <- paste0(pfad0, name, nr, csv) } else { # Remove all files in the folder (if possible) fil <- paste0(pfad0, fil) suppressWarnings( try( file.remove( fil ) , silent=TRUE) ) fil <- list.files(pfad0) # If there are no files anymore use the default save path. if( length(fil)==0 ) { pfad1 <- paste0(pfad0, name, nr, csv) } else { # If there are sill files, read out the number of the newest file (with the highest number) ncharfil <- nchar(fil) mx <- max( as.numeric( substr(fil,ncharfil-5,ncharfil-4) ) ) # Add 1 to the number of the file mxpl1 <- as.character( mx+1 ) if(nchar(mxpl1)==1) mxpl1 <- paste0("0",mxpl1) # Create a new path pfad1 <- paste0(pfad0, name, mxpl1, csv) } } # Rownames und colnames, die mit +, - oder = anfangen, mit '' am Anfang versehen, dass es von Excel richtig dargestellt wird rn1 <- rownames(x) cn1 <- colnames(x) ind <- substr(rn1,1,1)%in%c("+","-","=") if(any(ind)) rownames(x)[ind] <- paste0(" ",rn1[ind]) ind <- substr(cn1,1,1)%in%c("+","-","=") if(any(ind)) colnames(x)[ind] <- paste0(" ",cn1[ind]) # Write CSV file & open. if(names=="row") { # If the first cell of the file is named "ID" Microsoft Excel warns that a SYLK file is opened. Therefore it is renamed. if(rownames(x)[1]=="ID") rownames(x)[1] <- "lD" write.table(x, file=pfad1, sep = ";", col.names=FALSE, row.names=TRUE, quote=quote, na=na, ...) } else if (names=="col") { # If the first cell of the file is named "ID" Microsoft Excel warns that a SYLK file is opened. Therefore it is renamed. if(colnames(x)[1]=="ID") colnames(x)[1] <- "lD" write.table(x, file=pfad1, sep = ";", col.names=TRUE, row.names=FALSE, quote=quote, na=na, ...) } else if (names=="rowcol") { write.table(x, file=pfad1, sep = ";", col.names=NA) # Colnames & Rownames } else { write.table(x, file=pfad1, sep = ";", col.names=FALSE, row.names=FALSE, quote=quote, na=na, ...) } browseURL(pfad1) if(openfolder) { Sys.sleep(1) browseURL(folder) } }


Escribí una función para abrir archivos en Libre Office Calc o Excel. Mira aquí para más detalles .

view <- function(data, autofilter=TRUE) { # data: data frame # autofilter: whether to apply a filter to make sorting and filtering easier open_command <- switch(Sys.info()[[''sysname'']], Windows= ''open'', Linux = ''xdg-open'', Darwin = ''open'') require(XLConnect) temp_file <- paste0(tempfile(), ''.xlsx'') wb <- loadWorkbook(temp_file, create = TRUE) createSheet(wb, name = "temp") writeWorksheet(wb, data, sheet = "temp", startRow = 1, startCol = 1) if (autofilter) setAutoFilter(wb, ''temp'', aref(''A1'', dim(data))) saveWorkbook(wb, ) system(paste(open_command, temp_file)) }