studio - leer csv en r
¿Cómo copio y pego los datos en R desde el portapapeles? (8)
El título lo dice todo: tengo mis datos abiertos en otra aplicación (por ejemplo, una hoja de cálculo, como Excel o un editor de texto). Si copio esos datos en el portapapeles de mi sistema operativo, ¿cómo puedo leerlos en R como un data.frame?
El nombre y la conexión exacta utilizados para el ''portapapeles'' varían según el sistema operativo.
para ventanas:
x <- read.delim("clipboard")
para Mac OS:
x <- read.delim(pipe(“pbpaste”))
Esto funciona porque read.delim, como muchas funciones, aceptará un rango de tipos de conexión más allá de solo un archivo. Para Macs en realidad estamos usando una tubería. help(connections)
es bastante informativa.
El paquete psych tiene una función read.clipboard()
que hace esto un poco más fácil al probar su sistema operativo.
Como lo mencionaron otros aquí, también puede escribir en el portapapeles. Normalmente hay un límite de 32 K, que se puede aumentar al agregar un guión y un número después del portapapeles como, por ejemplo, pasar hasta 256 K de datos del objeto df con:
write.table(df, "clipboard-256")
Hay un paquete de R / RStudio plugin llamado datapasta
que hace esto muy bien - vea https://CRAN.R-project.org/package=datapasta . La imagen de abajo es una demostración de su simplicidad.
Ingrese data = as.numeric(read.table(text = "125 140 200 200 190 ", sep = " "))
donde sus números van entre las comillas text = " "
.
Mire la documentación para ?file
, sección Clipboard
:
El archivo del portapapeles se puede usar con description = "portapapeles" en el modo "r" solamente. Esto lee la selección primaria de X11 (consulte http://standards.freedesktop.org/clipboards-spec/clipboards-latest.txt ), que también se puede especificar como "X11_primary" y la selección secundaria como "X11_secondary". En la mayoría de los sistemas, la selección del portapapeles (la utilizada por ''Copiar'' de un menú ''Editar'') se puede especificar como "X11_clipboard". Cuando se abre un portapapeles para leer, el contenido se copia inmediatamente al almacenamiento interno en la conexión. Los usuarios de Unix que deseen escribir en una de las selecciones de X11 pueden hacerlo a través de xclip ( http://sourceforge.net/projects/xclip/ ) o xsel ( http://www.vergenet.net/~conrad/software/xsel/ ), por ejemplo por pipe ("xclip -i", "w") para la selección primaria. Los usuarios de macOS pueden usar pipe ("pbpaste") y pipe ("pbcopy", "w") para leer y escribir en el portapapeles de ese sistema.
así, por ejemplo, con magrittr:
base::file(description=''clipboard'') %>% readLines
Necesitaba copiar una url compuesta en el clipboard Windows, mientras que read.table()
un vector de caracteres con comillas alrededor de mi URL. En su lugar, utilicé writeClipboard(URL,format=1)
de utils del paquete, y writeClipboard(URL,format=1)
el problema.
Si desea leer datos tabulares de una hoja de cálculo, he usado el siguiente código
read.table(file = "clipboard", sep = "/t", header=TRUE)
Un método que he probado y funciona tanto en Windows como en MacOS es usar textConnection()
con read.table()
.
Primero, pegue sus datos en una variable como texto:
density_water_str <- "T_/K Density_g/mL D2O
273 0.999841 1.10469
274 0.999900 NA
275 0.999941 NA
276 0.999965 NA
277 0.999973 1.1057
278 0.999965 1.10562
279 0.999941 NA
280 0.999902 NA
281 0.999849 NA
282 0.999781 NA
281 0.999700 NA"
Luego, lea la cadena de texto usando read.table ()
density_water <- read.table(textConnection(
object = density_water_str),
header = TRUE,
sep = "",
stringsAsFactors = FALSE)
No probado en Linux u otros sistemas Unix, pero creo que debería funcionar en varias plataformas.
Suponiendo que tiene datos en el portapapeles de Windows (por ejemplo, datos copiados de Excel), para poner esos datos en una variable llamada copdat
en uso R:
copdat <- read.delim("clipboard")
Si desea copiar datos de una variable R llamada rdat
en el portapapeles de Windows (por ejemplo, para copiar en Excel) utilice:
write.table(rdat, "clipboard", sep="/t", row.names=FALSE, col.names=FALSE)