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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。