如何读取不带';在R中没有文件扩展名吗?

如何读取不带';在R中没有文件扩展名吗?,r,dataframe,file-extension,R,Dataframe,File Extension,我正在处理R中的气候数据集,我从这里下载了全球每年的温度/降水观测:,可以找到示例数据集,另一个是。但是,此数据的格式没有文件扩展名,其相应的文件扩展名被遗忘或丢失。我尝试了base::scan()将它们加载到R中,但输出不是所需的。因为每个文件必须有14个固定列,但如果我使用scan(),它将只读取7列,这对我来说是不需要的。有没有更好的函数来读取没有特定文件扩展名的文件?有什么想法吗 以下是气候数据列表的样子: 列表文件(“stella/data/air\u temp\u 1980\u 20

我正在处理R中的气候数据集,我从这里下载了全球每年的温度/降水观测:,可以找到示例数据集,另一个是。但是,此数据的格式没有文件扩展名,其相应的文件扩展名被遗忘或丢失。我尝试了
base::scan()
将它们加载到R中,但输出不是所需的。因为每个文件必须有14个固定列,但如果我使用
scan()
,它将只读取7列,这对我来说是不需要的。有没有更好的函数来读取没有特定文件扩展名的文件?有什么想法吗

以下是气候数据列表的样子:

列表文件(“stella/data/air\u temp\u 1980\u 2014/”,递归=TRUE)

以下是
scan()
如何生成其输出:

>scan(file = "stella/data/air_temp_1980_2014/air_temp.1980", sep = "", skip = 1)

[1] -179.75   68.75  -27.00  -28.20  -27.20  -21.60   -9.00
   [8]    0.60    2.80    1.90   -0.20  -11.90  -22.70  -25.10
  [15] -179.75   68.25  -27.80  -28.50  -27.50  -22.00   -9.50
  [22]    0.40    3.00    1.80   -0.80  -12.70  -23.60  -26.80
  [29] -179.75   67.75  -26.80  -26.60  -25.70  -20.50   -8.00
  [36]    2.70    6.00    4.00    0.50  -12.20  -23.20  -27.30
  [43] -179.75   67.25  -29.10  -28.40  -27.50  -22.30   -9.70
  [50]    2.20    6.20    3.30   -1.30  -15.40  -26.40  -31.10
  [57] -179.75   66.75  -25.40  -23.80  -22.90  -18.20   -6.10
  [64]    3.80    8.60    6.00    1.10  -11.50  -22.30  -27.20
所需输出

> desired output
         Long    Lat   Jan   Feb   Mar April   May   Jun   Jul
1     -179.75  68.75 -27.0 -28.2 -27.2 -21.6  -9.0   0.6   2.8
2     -179.75  68.25 -27.8 -28.5 -27.5 -22.0  -9.5   0.4   3.0
3     -179.75  67.75 -26.8 -26.6 -25.7 -20.5  -8.0   2.7   6.0
4     -179.75  67.25 -29.1 -28.4 -27.5 -22.3  -9.7   2.2   6.2
5     -179.75  66.75 -25.4 -23.8 -22.9 -18.2  -6.1   3.8   8.6
6     -179.75  66.25 -21.5 -18.9 -17.2 -14.0  -2.3   3.4   9.2
7     -179.75  65.75 -20.2 -17.9 -17.1 -13.2  -2.2   4.3  10.1
8     -179.75  65.25 -20.0 -18.7 -17.4 -14.1  -2.4   4.3  10.5
9     -179.75 -16.75  27.4  28.3  27.9  27.2  25.7  24.9  24.7
10    -179.75 -84.75 -18.9 -27.9 -38.6 -41.5 -41.2 -44.4 -45.2
11    -179.75 -85.25 -23.9 -33.8 -45.1 -47.9 -47.7 -50.4 -51.5
12    -179.75 -85.75 -22.8 -33.5 -45.2 -48.1 -47.7 -49.9 -51.4
13    -179.75 -86.25 -24.3 -35.5 -47.7 -50.6 -50.2 -52.1 -53.8
14    -179.75 -86.75 -25.5 -37.1 -49.6 -52.6 -52.1 -53.8 -55.7
15    -179.75 -87.25 -26.2 -38.1 -50.9 -53.8 -53.2 -54.8 -56.8
16    -179.75 -87.75 -26.7 -39.0 -51.9 -54.8 -54.3 -55.7 -57.9

我想读取R中的所有文件列表。如何才能像预期的那样在R中正确读取上述数据?有什么想法吗?

它似乎是一个以制表符分隔的文件(通过添加
.txt
扩展名确认)。如果您向每个文件添加.csv扩展名,然后使用空格作为分隔符显式地读入它们,那么应该可以正常工作。这可能会很乏味,但可能是您最好的选择,因为没有适当扩展名的文件本身就容易混淆

但是要小心,因为列名不会被保留。为了避免将第一行存储为列名,还需要将名称向量传递给函数

name_vector <- c("Long", "Lat", ... )

x <- read.csv("path/precip.1980.csv", sep = "", col.names = name_vector)
然后,您可以使用上面的代码迭代地读取中的文件。下面是一个可行的解决方案示例。为你做那件事

dat <- lapply(filelist, function (x) {
   read.csv(x, sep = "", col.names = name_vector)
})

dat它似乎是一个以制表符分隔的文件(通过添加
.txt
扩展名确认)。如果您向每个文件添加.csv扩展名,然后使用空格作为分隔符显式地读入它们,那么应该可以正常工作。这可能会很乏味,但可能是您最好的选择,因为没有适当扩展名的文件本身就容易混淆

但是要小心,因为列名不会被保留。为了避免将第一行存储为列名,还需要将名称向量传递给函数

name_vector <- c("Long", "Lat", ... )

x <- read.csv("path/precip.1980.csv", sep = "", col.names = name_vector)
然后,您可以使用上面的代码迭代地读取中的文件。下面是一个可行的解决方案示例。为你做那件事

dat <- lapply(filelist, function (x) {
   read.csv(x, sep = "", col.names = name_vector)
})

dat文件扩展名本身并不意味着什么。它表示文件中的数据是如何排序的。您应该在文本编辑器中打开该文件,以了解它是如何表示的


根据它的外观,它可能是一个以制表符分隔的csv文件。因此,将其导入R的方法是使用与CSV相关的输入函数,如
read.CSV
data.table::fread

文件扩展名本身并不意味着什么。它表示文件中的数据是如何排序的。您应该在文本编辑器中打开该文件,以了解它是如何表示的


根据它的外观,它可能是一个以制表符分隔的csv文件。因此,将其导入R的方法是使用与CSV相关的输入函数,如
read.CSV
data.table::fread

如果您有固定宽度的数据,请使用
read.fwf()
readr::read_fwf()
导入数据。文件是否具有特定扩展名与R无关。它只关系到文件的内部内容。如果您有固定宽度的数据,请使用
read.fwf()
readr::read_fwf()
导入数据。一个文件是否有一个特定的扩展名与R无关。它只关系到里面是什么。我不是告诉你它没有扩展名,而是告诉你如何修复它。或者,我编辑了我的帖子,为你提供了一种更自动化的方式。可能仍然存在问题,但如果没有合适的reprex,我无法使用它来找出问题所在。如果你从我的原始答案中提取代码并进行编辑,除了找出列名问题之外,你应该被设置@DanI没有告诉你它没有扩展,我是告诉你如何修复它。或者,我编辑了我的帖子,为你提供了一种更自动化的方式。可能仍然存在问题,但如果没有合适的reprex,我无法使用它来找出问题所在。如果你从我的原始答案中提取代码并进行编辑,除了找出列名问题之外,你应该被设置@丹