你在R中可能遇到的一个警告是:
Warning message:
In read.table(file = file, header = header, sep = sep, quote = quote, :
incomplete final line found by readTableHeader on 'my_data.csv'
当你试图将一个CSV文件读入R中,但文件的最后一行不是空白时,就会出现这个警告。
值得注意的是,这只是一个警告信息,而不是一个错误。即使出现这个信息,你的文件仍然会被导入到R中。
本教程分享如何完全避免这个警告。
如何重现该警告
假设我有以下名为my_data.csv的CSV文件,我想将其导入R中:

现在假设我试图使用下面的代码将这个CSV文件导入R中:
#import CSV file
df <- read.csv('my_data.csv')
Warning message:
In read.table(file = file, header = header, sep = sep, quote = quote, :
incomplete final line found by readTableHeader on 'my_data.csv'
我收到一条警告信息,因为CSV文件的最后一行不是空白。
然而,该文件仍然被成功导入:
#view imported data frame
df
team points assists
1 A 20 5
2 B 15 3
3 C 19 9
4 D 20 3.
方法一:如何避免警告
避免这个警告的方法之一是简单地将 read.csv()函数放在suppressWarnings()函数内:
#import CSV file and suppress any warnings
df <- suppressWarnings(read.csv('my_data.csv'))
#view data frame
df
team points assists
1 A 20 5
2 B 15 3
3 C 19 9
4 D 20 3
这次我们就能在没有任何警告的情况下导入CSV文件。
这种方法的好处是,我们不必直接修改文件。
这种方法的缺点是,如果在导入文件时有更严重的警告需要我们知道,我们将无法看到它们。
方法2:如何避免该警告
另一种避免该警告的方法是直接修改CSV文件。
具体来说,我们可以到文件的最后一行,按回车键在文件的末尾创建一个新的空行:

现在,当我们导入CSV文件时,我们不会收到任何警告:
#import CSV file
df <- read.csv('my_data.csv')
#view data frame
df
team points assists
1 A 20 5
2 B 15 3
3 C 19 9
4 D 20 3
这种方法的好处是,我们在导入文件时仍能看到任何其他警告。
这种方法的缺点是,我们必须直接修改文件,而不是简单地使用程序化的解决方案。
其他资源
下面的教程解释了如何在R中执行其他常见操作: