全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
9912 7
2013-05-23
R如何统计一个矩阵中的数值是0的个数?

R如何实现Matlab 中生成稀疏均匀分布的随机矩阵即:A=sprand(10,10, 0.6),R中好像没有现成函数,感觉好麻烦,请大家指教下?
谢谢!!!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-5-23 20:11:40
这个很容易解决,你需要编写代码~~~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-5-23 20:50:50
nInternalUnits=10
internalWeights=0
connectivity=0.6
success1 = 0
success = 0
k=0                                             
while(success == 0)
   {
    # following block might fail, thus we repeat until we obtain a valid
    # internalWeights matrix
   
        internalWeights=matrix(runif(nInternalUnits*nInternalUnits,0,1),nrow=nInternalUnits,ncol=nInternalUnits,byrow=TRUE)
        while(runif(nInternalUnits*nInternalUnits,0,1)==0&&success1==0)
          {
               k=k+1
               if(k==(1-connectivity)*nInternalUnits*nInternalUnits)
                  {
                      internalWeights<-matrix(runif(nInternalUnits*nInternalUnits,0,1),nrow=nInternalUnits,ncol=nInternalUnits,byrow=TRUE);
                      success1 = 1
                  }
            
           }
         if(success1 == 1)
           {
               internalWeights[internalWeights!=0] = internalWeights[internalWeights!=0]  - 0.5;
               maxVal = max(abs(eigen(internalWeights,only.values = TRUE)$values));
               internalWeights = internalWeights/maxVal;
               success = 1

           }
         
    }
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
关键是while(runif(nInternalUnits*nInternalUnits,0,1)==0&&success1==0)统计矩阵中的0的个数不会
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-5-23 22:52:49
统计R浪人 发表于 2013-5-23 20:50
nInternalUnits=10
internalWeights=0
connectivity=0.6
sum(x == 0)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-5-24 06:45:56
统计R浪人 发表于 2013-5-23 20:50
nInternalUnits=10
internalWeights=0
connectivity=0.6
It seems very complicated. Here is a simple one with 30% zeros

n<- 6
y<- runif(n*n)>0.3
y
x <- matrix(y*runif(n*n), ncol=n)
x
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-5-24 06:59:49
Here are R codes from R package


##' @title Random Sparse Matrix
##' @param nrow,
##' @param ncol number of rows and columns, i.e., the matrix dimension
##' @param nnz number of non-zero entries
##' @param rand.x random number generator for 'x' slot
##' @param ... optionally further arguments passed to sparseMatrix()
##' @return a sparseMatrix of dimension (nrow, ncol)
##' @author Martin Maechler

library(Matrix)
rSparseMatrix <- function(nrow, ncol, nnz,
                          rand.x = function(n) round(rnorm(nnz), 2), ...)
{
  stopifnot((nnz <- as.integer(nnz)) >= 0,
            nrow >= 0, ncol >= 0, nnz <= nrow * ncol)
  sparseMatrix(i = sample(nrow, nnz, replace = TRUE),
               j = sample(ncol, nnz, replace = TRUE),
               x = rand.x(nnz), dims = c(nrow, ncol), ...)
}

M1 <- rSparseMatrix(1000, 20, nnz = 200)
summary(M1)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群