gpt4 book ai didi

r - 强制 "apply"返回一个矩阵?

转载 作者:行者123 更新时间:2023-12-03 14:50:46 26 4
gpt4 key购买 nike

假设我有一个数据矩阵,我想先将矩阵按行居中,然后按列计算均值。

a=matrix(runif(50),nrow=5)
a1=apply(a,1,function(x)x-mean(x))
a.sum=apply(a1,1,sum)

这在 a 时效果很好有多个列。但是,有时输入只有一列,这会引起麻烦:
a=matrix(runif(5))
a1=apply(a,1,function(x)x-mean(x))
a.sum=apply(a1,1,sum)
Error in apply(a1, 1, sum) : dim(X) must have a positive length

这是因为第一个 apply返回一个向量,而不是一个矩阵。 R 自动删除了维度。那么有没有聪明的方法来防止这种情况发生?我知道我可以使用 if侦探的维度 a并用不同的编码处理它。但这似乎有点尴尬。

最佳答案

只需告诉 R 它是一个矩阵:

a=matrix(runif(5))
# [,1]
#[1,] 0.0103764
#[2,] 0.9738857
#[3,] 0.2845688
#[4,] 0.7050949
#[5,] 0.3000554

a1=as.matrix(apply(a,1,function(x)x-mean(x)))
# [,1]
#[1,] 0
#[2,] 0
#[3,] 0
#[4,] 0
#[5,] 0

a.sum=apply(a1,1,sum)
#[1] 0 0 0 0 0

关于r - 强制 "apply"返回一个矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33430592/

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