pairs - R read.table(), ¿cómo puedo leer el encabezado pero también omitir líneas?
poligono en r (5)
En lugar de read.table()
, use una función readr
como read_csv()
, canalizada a dplyr::slice()
.
library(readr)
library(dplyr)
dat <- read_csv("data.txt") %>% slice(-1)
Es muy rápido también.
Data.txt:
Index;Time;
1;2345;
2;1423;
3;5123;
El código:
dat <- read.table(''data.txt'', skip = 1, nrows = 2, header =TRUE, sep ='';'')
El resultado:
X1 X2345
1 2 1423
2 3 5123
Espero que el encabezado sea Índice y Tiempo, de la siguiente manera:
Index Time
1 2 1423
2 3 5123
¿Cómo puedo hacer eso?
Estás utilizando omitir incorrectamente. Prueba esto:
dat <- read.table(''data.txt'', nrows = 2, header =TRUE, sep ='';'')[-1, ]
La solución utilizando fread
desde data.table
.
require(data.table)
fread("Data.txt", drop = "V3")[-1]
Resultado:
> fread("Data.txt", drop = "V3")[-1]
Index Time
1: 2 1423
2: 3 5123
Me temo que no hay una forma directa de lograr esto. O bien lee la tabla completa y luego elimina las líneas que no desea, o si lee la tabla dos veces y le asigna el encabezado más tarde:
header <- read.table(''data.txt'', nrows = 1, header = FALSE, sep ='';'', stringsAsFactors = FALSE)
dat <- read.table(''data.txt'', skip = 2, header = FALSE, sep ='';'')
colnames( dat ) <- unlist(header)
Usted podría (en la mayoría de los casos), eliminar el final ;
escriba un nuevo archivo sin la segunda fila (que en realidad es la primera fila debido al encabezado), y use read.csv
lugar de read.table
> txt <- "Index;Time;
1;2345;
2;1423;
3;5123;"
> writeLines(sub(";$", "", readLines(textConnection(txt))[-2]), ''newTxt.txt'')
> read.csv(''newTxt.txt'', sep = ";")
## Index Time
## 1 2 1423
## 2 3 5123