【问题标题】:r error : requires numeric/complex matrix/vector arguments?r 错误:需要数字/复杂矩阵/向量参数?
【发布时间】:2021-01-27 05:18:02
【问题描述】:

下午好!

我正在尝试从头开始实现 EM 算法。我开发的代码包含:

k=10
w_k=rep(1,k)/k
n_j=rep(0,k)

print(w_k)

data=iris[1:150,-5]
means=sample(1:dim(data)[1],k,replace=FALSE)
means
mu=iris[means,-5]
sigma=cov(data)
print("mu")
mu
print("sigma")
sigma
print("inv")
solve(sigma)
print("mu[1,] ")
as.vector(mu[1,])
as.vector(mu[1,]) %*%  solve(sigma) #line of error 

不幸的是,这一行给出了以下错误:

Error in as.vector(mu[1, ]) %*% solve(sigma) : 
  requires numeric/complex matrix/vector arguments
Execution halted

我多次尝试使用as.matrix() 解决问题,但均未成功。 提前感谢您的帮助!

【问题讨论】:

    标签: r


    【解决方案1】:

    向量mu 是一个data.frame。尝试将其转换为矩阵。

    as.matrix(mu[1,]) %*%  solve(sigma)
    #   Sepal.Length Sepal.Width Petal.Length Petal.Width
    #95     16.37781    11.46013    -0.198358   -9.473886
    

    【讨论】:

    • 是的,我们同时解决了这个问题,谢谢!
    【解决方案2】:

    mu 是一个数据框,应该转换为一个矩阵。

    k=10
    w_k=rep(1,k)/k
    n_j=rep(0,k)
    
    print(w_k)
    
    data=iris[1:150,-5]
    means=sample(1:dim(data)[1],k,replace=FALSE)
    means
    mu=as.matrix(iris[means,-5])
    sigma=cov(data)
    print("mu")
    mu
    print("sigma")
    sigma
    print("inv")
    solve(sigma)
    print("mu[1,] ")
    
    is.numeric(mu[1,])
    is.matrix(mu[1,])
    rbind(mu[1,]) %*%  solve(sigma) %*% cbind(mu[1,])
    

    【讨论】:

      猜你喜欢
      • 2017-03-12
      • 2014-05-19
      • 2018-06-04
      • 2019-12-03
      • 2021-08-23
      • 1970-01-01
      • 2018-05-08
      • 2018-05-28
      • 1970-01-01
      相关资源
      最近更新 更多