当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R data.frame DataFrame


R语言 data.frame 位于 base 包(package)。

说明

函数data.frame()创建 DataFrame ,紧密耦合的变量集合,它们共享矩阵和列表的许多属性,被大多数人用作基本数据结构R的建模软件。

用法

data.frame(..., row.names = NULL, check.rows = FALSE,
           check.names = TRUE, fix.empty.names = TRUE,
           stringsAsFactors = FALSE)

参数

...

这些参数的形式为 valuetag = value 。组件名称是根据标签(如果存在)或解析的参数本身创建的。

row.names

NULL 或指定用作行名称的列的单个整数或字符串,或者给出 DataFrame 的行名称的字符或整数向量。

check.rows

如果TRUE,则检查行的长度和名称的一致性。

check.names

合乎逻辑的。如果TRUE,则检查 DataFrame 中的变量名称以确保它们是语法上有效的变量名称并且不重复。如果有必要的话,它们会被调整(通过 make.names ),这样它们就可以了。

fix.empty.names

逻辑指示参数 “unnamed” (在没有正式称为 someName = arg 的意义上)是否获得自动构造的名称或名称 "" 。如果应保留 "" 名称,即使 check.names 为 false,也需要设置为 FALSE

stringsAsFactors

逻辑:字符向量应该转换为因子吗? ‘factory-fresh’默认值是TRUE以前但已更改为FALSE为了R4.0.0。

细节

DataFrame 是具有相同行数且具有唯一行名称的变量列表,给定类 "data.frame" 。如果不包含变量,则行名称决定行数。

列名称不应为空,尝试使用空名称将产生不受支持的结果。允许重复的列名,但您需要使用 check.names = FALSE for data.frame 来生成这样的 DataFrame 。但是,并非数据帧上的所有操作都会保留重复的列名称:例如,类似矩阵的子集将强制结果中的列名称是唯一的。

data.frame通过调用将其每个参数转换为 DataFrame as.data.frame(optional = TRUE)。由于这是一个通用函数,因此可以编写方法来根据参数的类更改参数的行为:R有很多这样的方法。传递给的字符变量data.frame如果不受保护,则转换为因子列I和论证stringsAsFactors是真的。如果将列表或 DataFrame 或矩阵传递给data.frame就好像每个组件或列都作为单独的参数传递(受保护的矩阵除外)I)。

传递给 data.frame 的对象应具有相同的行数,但原子向量(请参阅 is.vector )、受 I 保护的因子和字符向量将在必要时被回收整数次(包括作为列表参数的元素) )。

如果在对 data.frame 的调用中未提供行名称,则行名称将从具有合适名称的第一个组件中获取,例如命名向量或具有行名称的矩阵或 DataFrame 。 (如果该组件随后被回收,则名称将被丢弃并带有警告。)如果 row.names 作为 NULL 提供,或者未找到合适的组件,则行名称是从 1 开始的整数序列(并且此类行名称被视为为 ‘automatic’,并且不被 as.matrix 保留)。

如果提供的行名称长度为 1 并且数据帧只有一行,则使用 row.names 来指定行名称而不是列(按名称或编号)。

名称将从不受 I 保护的向量输入中删除。

DataFrame ,一种类似矩阵的结构,其列可以是不同类型(数字、逻辑、因子和字符等)。

DataFrame 的名称是如何创建的很复杂,本段的其余部分只是基本的故事。如果参数都是命名的简单对象(不是列表、 DataFrame 矩阵),则参数名称给出列名称。对于未命名的简单参数,参数的解析版本用作名称(删除了封闭的 I(...))。对于具有多个命名列的命名矩阵/列表/ DataFrame 参数,列的名称是参数名称后跟一个点和参数内的列名称:如果参数未命名,则为参数的列名称被使用。对于包含单个列的命名或未命名矩阵/列表/ DataFrame 参数,结果中的列名称是参数中的列名称。最后,名称被调整为唯一且语法有效,除非 check.names = FALSE

注意

在以下版本中R2.4.0之前row.names必须是字符:以确保与此类版本的兼容性R,提供一个字符向量作为row.names争论。

例子

L3 <- LETTERS[1:3]
char <- sample(L3, 10, replace = TRUE)
(d <- data.frame(x = 1, y = 1:10, char = char))
## The "same" with automatic column names:
data.frame(1, 1:10, sample(L3, 10, replace = TRUE))

is.data.frame(d)

## enable automatic conversion of character arguments to factor columns:
(dd <- data.frame(d, fac = letters[1:10], stringsAsFactors = TRUE))
rbind(class = sapply(dd, class), mode = sapply(dd, mode))

stopifnot(1:10 == row.names(d))  # {coercion}

(d0  <- d[, FALSE])   # data frame with 0 columns and 10 rows
(d.0 <- d[FALSE, ])   # <0 rows> data frame  (3 named cols)
(d00 <- d0[FALSE, ])  # data frame with 0 columns and 0 rows

参考

Chambers, J. M. (1992) Data for models. Chapter 3 of Statistical Models in S eds J. M. Chambers and T. J. Hastie, Wadsworth & Brooks/Cole.

也可以看看

Iplot.data.frameprint.data.framerow.namesnames (用于列名称)、[.data.frame 用于子集方法和 I(matrix(..)) 示例; Math.data.frame 等,关于 data.frame 的 Group 方法; read.tablemake.nameslist2DF 用于从变量列表创建 DataFrame 。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Data Frames。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。