R官方入门教程 (7)从文件中读取数据

R语言提供了read.table()和scan()函数用于从文件中读取数据。read.table()适用于读取符合特定格式的数据框,如文件第一行为列名。scan()则更灵活,适合读取多个向量。此外,R还内置了大量数据集,可以通过data()函数访问。编辑数据时,edit()和fix()函数能提供便捷的电子表格式编辑体验。
摘要由CSDN通过智能技术生成

R是一门著名的可用于数据和统计分析的程序语言,本文翻译自R软件官方文档教程An Introduction to R,仅供学习和参考。

7 从文件中读取数据

大型的数据对象通常从外部文件中读取,而不是直接通过键盘输入。 R的 数据导入很简单,但要求相当严格,甚至可以说相当不灵活。 R 的设计者有一个明确的假定,即您将能够使用其他工具修改您的数据文件以适应 R 的要求。通常这很简单。

如果数据变量主要保存在数据框中(强烈建议),可以使用 read.table() 函数直接读取整个数据框。还有一个更原始的数据读取函数,scan()

7.1 read.table()函数

为了直接读取整个数据框,文件通常需要满足以下特殊形式:

  • 文件的第一行应该是数据框各列变量的名称

  • 文件的每一行由行标和数据值组成

文件的第一行可以比其他行少一个元素。所以,可以读取的文件看起来像这个样子:

在这里插入图片描述

默认情况下,数值列(除行标签外)作为数值型变量被读取。非数值列,如例子中的Cent.heat,作为字符串变量读取。如果有必要,可以改变这一点。

可以使用函数read.table()直接读取数据框:

> HousePrice <- read.table("houses.data")
> HousePrice
   Price Floor Area Rooms Age Cent.heat
01 52.00   111  830     5 6.2        no
02 54.75   128  710     5 7.5        no
03 57.50   101 1000     5 4.2        no
04 57.50   131  690     6 8.8        no
05 59.75    93  900     5 1.9       yes

通常您会希望在读取的时候省略行标签,而使用默认行标签。

在这里插入图片描述

> HousePrice <- read.table("houses.data", header=TRUE)

这会显式地将第一行看做列标题。

7.2 scan()函数

假设数据向量长度相等并且要并行读取。进一步假设,有三个向量,第一个是字符串向量,其余两个是数值向量,文件是input.dat
在这里插入图片描述

我们要做的第一步,是使用scan()函数将三个向量作为一个列表整体读入,如下:

> inp <- scan("input.dat", list("",0,0))
> inp
[[1]]
[1] "A" "B" "C"

[[2]]
[1] 1 2 3

[[3]]
[1] 1.1 2.2 3.3

第二个参数我们传入了一个虚拟列表,它建立了要读取的三个向量的类型:字符串"",数值0,数值0。结果保存在inp中,是一个列表,其组件是读入的三个向量。要将数据项分成三个单独的向量,请使用如下赋值:

> label <- inp[[1]]; x <- inp[[2]]; y <- inp[[3]]

更方便的是,虚拟列表可以具有命名组件,在这种情况下,名称可用于访问读入的向量。例如:

> inp <- scan("input.dat", list(id="", x=0, y=0))
> inp
$id
[1] "A" "B" "C"

$x
[1] 1 2 3

$y
[1] 1.1 2.2 3.3
> inp$id
[1] "A" "B" "C"

如果第二个参数是单个值而不是列表,则读入单个向量,其所有分量必须与虚拟值具有相同的类型。

7.3 访问内置数据集

R 提供了大约 100 个内置数据集(在datasets包中),其他数据集则在其它包中提供(包括 R 提供的推荐包)。要查看当前可用的数据集列表,请使用

> data()

R 提供的所有数据集都可以直接通过名称获得。然而,许多包仍然使用过时的约定,即使用data()函数将数据集加载到 R 中,例如:

> data(infert)

7.3.1 从其他 R 包加载数据

要访问特定包中的数据,请指定package参数,例如

> data(package="rpart")
> data(Puromycin, package="datasets")

如果包已被library()附加,则其数据集会自动包含在搜索路径中.

用户提供的包可以是丰富的数据集来源。

7.4 编辑数据

当在数据框或矩阵上调用时,edit()函数会打开一个单独的类似电子表格的窗口来进行编辑。这对于在读取数据集后进行小的更改很有用。

> xnew <- edit(xold) 

以上代码将允许您编辑数据集xold,完成后将更改的对象分配给 xnew。如果要改变原始数据集xold,最简单的方法是使用fix(xold),这相当于xold <- edit(xold)

使用

> xnew <- edit(data.frame()) 

通过电子表格界面输入新数据。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值