array2DF
位于 base
包(package)。 说明
array2DF
将数组(包括通常由 tapply
返回的列表数组)转换为数据帧,以供进一步分析或绘图函数使用。
用法
array2DF(x, responseName = "Value",
sep = "", base = list(LETTERS),
simplify = TRUE, allowLong = TRUE)
参数
x |
一个数组对象。 |
responseName |
字符串,用于在结果中创建列名称(如果需要)。 |
sep |
字符串,如果需要,在创建新名称时用作分隔符。 |
base |
字符向量,给出一组初始名称来创建 |
simplify |
逻辑上,是否尝试简化结果。 |
allowLong |
逻辑,指定如果 |
细节
array2DF
的主要用途是将数组(通常由 tapply
返回)转换为数据帧。
当 simplify = FALSE
时,这与 as.data.frame.table
类似,只不过它适用于列表数组和原子数组。具体来说,生成的数据帧对于数组的每个元素都有一行,对于数组的每个维度有一列,给出相应的 dimnames
。数组的内容放置在列中,列的名称由 responseName
参数指定。该列的模式与 x
相同,通常是原子向量或列表。
如果 x
没有 dimnames
,则会使用 base
和 sep
自动创建它们。
默认情况下,当 simplify = TRUE
时,一些常见情况会被特殊处理。
如果 x
的所有组件都是具有相同列名(可能具有不同行数)的数据帧,则它们将被 rbind
编辑以形成响应。给出dimnames
的附加列根据行数重复,并且在这种情况下忽略responseName
。
如果 x
的所有分量都是未命名的原子向量和 allowLong = TRUE
,则每个分量都被视为 single-column 数据帧,其列名称由 responseName
给出,并按上述方式进行处理。
在所有其他情况下,simplify2array
都会尝试进行简化。如果这导致多个未命名列,则使用 responseName
和 sep
构造名称。
值
至少包含 length(dim(x)) + 1
列的 DataFrame 。第一个 length(dim(x))
列各自代表 x
的一个维度,并给出 dimnames
的相应值,如有必要,这些值会隐式创建。如果需要的话,在尝试简化后,其余列包含 x
的内容。
例子
s1 <- with(ToothGrowth,
tapply(len, list(dose, supp), mean, simplify = TRUE))
s2 <- with(ToothGrowth,
tapply(len, list(dose, supp), mean, simplify = FALSE))
str(s1) # atomic array
str(s2) # list array
str(array2DF(s1, simplify = FALSE)) # Value column is vector
str(array2DF(s2, simplify = FALSE)) # Value column is list
str(array2DF(s2, simplify = TRUE)) # simplified to vector
### The remaining examples use the default 'simplify = TRUE'
## List array with list components: columns are lists (no simplification)
with(ToothGrowth,
tapply(len, list(dose, supp),
function(x) t.test(x)[c("p.value", "alternative")])) |>
array2DF() |> str()
## List array with data frame components: columns are atomic (simplified)
with(ToothGrowth,
tapply(len, list(dose, supp),
function(x) with(t.test(x), data.frame(p.value, alternative)))) |>
array2DF() |> str()
## named vectors
with(ToothGrowth,
tapply(len, list(dose, supp),
quantile)) |> array2DF()
## unnamed vectors: long format
with(ToothGrowth,
tapply(len, list(dose, supp),
sample, size = 5)) |> array2DF()
## unnamed vectors: wide format
with(ToothGrowth,
tapply(len, list(dose, supp),
sample, size = 5)) |> array2DF(allowLong = FALSE)
## unnamed vectors of unequal length
with(ToothGrowth[-1, ],
tapply(len, list(dose, supp),
sample, replace = TRUE)) |>
array2DF(allowLong = FALSE)
## unnamed vectors of unequal length with allowLong = TRUE
## (within-group bootstrap)
with(ToothGrowth[-1, ],
tapply(len, list(dose, supp), sample, replace = TRUE)) |>
array2DF() |> str()
## data frame input
tapply(ToothGrowth, ~ dose + supp, FUN = with,
data.frame(n = length(len), mean = mean(len), sd = sd(len))) |>
array2DF()
也可以看看
相关用法
- R array 多路阵列
- R args 函数的参数列表
- R apply 在数组边距上应用函数
- R as.Date 日期与字符之间的转换函数
- R agrep 近似字符串匹配(模糊匹配)
- R append 向量合并
- R assignOps 赋值运算符
- R as.POSIX* 日期时间转换函数
- R asplit 按边距分割数组/矩阵
- R attributes 对象属性列表
- R abbreviate 缩写字符串
- R all.equal 测试两个对象是否(几乎)相等
- R aperm 数组转置
- R attr 对象属性
- R autoload 按需加载包
- R attach 将一组 R 对象附加到搜索路径
- R all.names 查找表达式中的所有名称
- R as.environment 强制环境对象
- R as.function 将对象转换为函数
- R assign 为名称分配值
- R any 有些值是真的吗?
- R as.data.frame 强制数据帧
- R all 所有的值都是真的吗?
- R file.path 构造文件路径
- R grep 模式匹配和替换
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Convert array to data frame。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。