gpt4 book ai didi

arrays - 将数组转换为 R 中的矩阵

转载 作者:行者123 更新时间:2023-12-04 13:22:12 25 4
gpt4 key购买 nike

我有一个数组,其中包括一个名为“comp”的项目(是,否)上的两个熟练变量(theta0、theta1)。这需要转换为一个矩阵。有什么办法可以转换像底部那样的矩阵吗?

我的数组如下所示:

>priCPT.i6

, , comp = Yes

theta1
theta0 Low Med High
Low 0.8377206 0.6760511 0.4576021
Med 0.6760511 0.4576021 0.2543239
High 0.4576021 0.2543239 0.1211734

, , comp = No

theta1
theta0 Low Med High
Low 0.1622794 0.3239489 0.5423979
Med 0.3239489 0.5423979 0.7456761
High 0.5423979 0.7456761 0.8788266

attr(,"class")
[1] "CPA" "array"

我很抱歉,我无法制作您可以玩的东西。我正在寻找类似的东西:
theta0   theta1   Yes        No
Low Low 0.8377206 0.1622794
Low Med .. ..
Low High .. ..
Med Low .. ..
Med Med .. ..
Med High .. ..
High Low .. ..
High Med .. ..
High High .. ..

问候...

最佳答案

您可以通过展平第三个边距上的矩阵来轻松获取值列:

z1 <- apply(priCPT.i6, 3L, c)
## we can also simply use `matrix`; but remember to set `dimnames`
## otherwise we lose dimnames
## z1 <- matrix(priCPT.i6, ncol = 2L,
## dimnames = list(NULL, dimnames(priCPT.i6)[[3]]))

剩下的就是附加“dimnames”列:
z2 <- expand.grid(dimnames(priCPT.i6)[1:2])

现在您可以通过以下方式将它们合并到一个数据框(您肯定需要一个数据框而不是矩阵,因为 z1 的列是数字,而 z2 的列是字符):
data.frame(z2, z1)

可重现的示例
x <- array(1:18, dim = c(3L, 3L, 2L), dimnames = list(
c("Low", "Medium", "High"), c("Low", "Medium", "High"), c("Yes", "No")))

#, , Yes
#
# Low Medium High
#Low 1 4 7
#Medium 2 5 8
#High 3 6 9
#
#, , No
#
# Low Medium High
#Low 10 13 16
#Medium 11 14 17
#High 12 15 18

z1 <- apply(x, 3L, c)
## z1 <- matrix(x, ncol = 2L, dimnames = list(NULL, dimnames(x)[[3]]))
z2 <- expand.grid(dimnames(x)[1:2])
data.frame(z2, z1)

# Var1 Var2 Yes No
#1 Low Low 1 10
#2 Medium Low 2 11
#3 High Low 3 12
#4 Low Medium 4 13
#5 Medium Medium 5 14
#6 High Medium 6 15
#7 Low High 7 16
#8 Medium High 8 17
#9 High High 9 18

关于arrays - 将数组转换为 R 中的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40921426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com