四时宝库

程序员的知识宝库

R语言中使用scan函数从文件中读取数据

R语言中的scan函数除了可以从键盘获取数据外,还可以从文件中读取数据,下面将介绍如何从文本文件以及CSV文件中读取数据的方法。

从文本文件中读取数据

假设在R的当前工作目录中有一个文件:student.txt,其存储的数据如下图所示,每个数据以空格分隔。

可以使用下面的语句从该文件中读取出数据:

(1)scan("student.txt", what="c") #以字符串的格式读取数据

(2)scan("student.txt", what="c", nlines=3) #读取3行

(3)scan("student.txt", what="c", skip=1) #忽略第1行

以上的执行情况如下图所示:

从结果来看,可能并非我们所要的形式,上面这三种形式可以用于整个文件只有一种数据的情形,如只有100个人的身高数据,而对于有多个变量的数据,可能就不适用了,如第一种格式,它将字段名也当做数据来读取了,其它两种格式,将所有变量(字段)中的数据混到一起了,在处理时不够方便。

(4)scan("student.txt", what = list(studentNo="", studentName="", studentSex="", studentAge=0), skip=1) #以列表的形式读取数据

这种格式,可以将文件中的数据按照变量(字段)读取到列表中,在实际应用中就方便多了。

(5)lst <- scan("student.txt", what = list(xh="", xm="", xb="", nl=0), skip=1) #读取数据并保存到变量中

将数据从文件中读取到变量中,在应用中更加方便,这样就可以像前面文章中介绍的列表数据处理方法中的形式读取相应的数据了。

从CSV文件中读取数据

CSV文件,默认是以逗号进行分隔的数值文件。将Excel文件另存CSV格式的文件后,可以使用R语言的scan()函数读取其数据。

使用scan()函数读取csv格式的文件,与读取文本型数据没有多大区别,不过要指定逗号作为分隔符。

将student.txt文件中的数据键入到Excel文件后,另存为student.csv,并将其放到R的工作目录中。

(1)scan("student.csv") #scan()函数默认以double格式存储数据,而该文件中包含不能转换的数据而报错

(2)scan("student.csv", what="c") #由于未指定分隔符,scan()函数将每一行作为一个数据域

(3)scan("student.csv", what="c", sep=",") #指定逗号作为分隔符后,可以正确读取数据了

(4)scan("student.csv", what="c", sep=",", skip = 1) #忽略第一行的标题行

以上在R中的执行情况如下图所示:

(5)scan("student.csv", what = list(xh="", xm="", xb="", nl=0), sep=",", skip=1) #以列表的形式读取数据

(6)m <- matrix(scan("student.csv", what="c", sep=",", skip=1), ncol=4, byrow=TRUE) #读取数据并创建矩阵

以上执行情况如下图所示:

关于scan函数从文件中获取数据的内容就介绍到这里,有问题可以留言。


欢迎关注本号,本号近期将持续更新有关R语言方面的文章,内容将由浅入深,从基本语法到数据分析,逐渐步入R语言的世界。如有疑问或建议请给我留言。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接