gpt4 book ai didi

R apply 语句不适用于矩阵

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

我想知道为什么以下内容不适用于我发布的矩阵结构 here (我使用了 dput 命令)。

当我尝试运行时:

apply(mymatrix, 2, sum)

我得到:
Error in FUN(newX[, i], ...) : invalid 'type' (list) of argument

但是,当我检查以确保它是一个矩阵时,我得到以下信息:

is.matrix(mymatrix)


[1] TRUE

我意识到我可以通过将数据取消列出到临时变量中然后重新创建矩阵来解决这个问题,但我很好奇为什么会发生这种情况。

最佳答案

?is.matrix说:

'is.matrix' returns 'TRUE' if 'x' is a vector and has a '"dim"' attribute of length 2) and 'FALSE' otherwise.



你的对象是一个带有dim 属性的列表。列表是一种向量(尽管它不是原子类型,这是大多数人认为的向量),所以 is.matrix返回 TRUE .例如:
> l <- as.list(1:10)
> dim(l) <- c(10,1)
> is.matrix(l)
[1] TRUE

转换 mymatrix对于原子矩阵,您需要执行以下操作:
mymatrix2 <- unlist(mymatrix, use.names=FALSE)
dim(mymatrix2) <- dim(mymatrix)
# now your apply call will work
apply(mymatrix2, 2, sum)
# but you should really use (if you're really just summing columns)
colSums(mymatrix2)

关于R apply 语句不适用于矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12481847/

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