当我尝试在R中读取文本文件时出现错误:
“扫描错误(文件,内容,nmax,sep,dec,quote,skip,nlines,na.strings,: 第2行没有5个元素“
我尝试使用以下代码读取文本文件:
read.fwf(file=url("http://d396qusza40orc.cloudfront.net/getdata%2Fwksst8110.for"),
widths=c(9,8, 8, 8, 8),sep = "", skip = 2, header= TRUE)
我加载了包readr
。
答案 0 :(得分:0)
您写道您正在使用包读取器,但您使用基本功能来读取固定宽度的文件。
加载readr后,您可以使用以下内容加载数据。正如Pascal提到的那样,跳过前3行,如果指定col_names = FALSE则为4(参见代码)。此外,无需指定固定宽度,因为它是由空格分隔的漂亮表格格式。 read_table函数应该可以正常工作。
library(readr)
file <- "http://d396qusza40orc.cloudfront.net/getdata%2Fwksst8110.for"
df2 <- read_table(file, skip = 4, col_names = FALSE)
# Check information in file and check how the headers should be
read_lines(file, n_max = 4)
[1] " Weekly SST data starts week centered on 3Jan1990" ""
[3] " Nino1+2 Nino3 Nino34 Nino4" " Week SST SSTA SST SSTA SST SSTA SST SSTA"
# Set correct header names. Manually was faster than programming.
names(df2) <- c("Week", "Nino1+2 SST SSTA", "Nino3 SST SSTA", "Nino34 SST SSTA", "Nino4 SST SSTA")
head(df2)
Week Nino1+2 SST SSTA Nino3 SST SSTA Nino34 SST SSTA Nino4 SST SSTA
1 03JAN1990 23.4-0.4 25.1-0.3 26.6 0.0 28.6 0.3
2 10JAN1990 23.4-0.8 25.2-0.3 26.6 0.1 28.6 0.3
3 17JAN1990 24.2-0.3 25.3-0.3 26.5-0.1 28.6 0.3
4 24JAN1990 24.4-0.5 25.5-0.4 26.5-0.1 28.4 0.2
5 31JAN1990 25.1-0.2 25.8-0.2 26.7 0.1 28.4 0.2
6 07FEB1990 25.8 0.2 26.1-0.1 26.8 0.1 28.4 0.3