相关疑难解决方法(0)

在R中旋转矩阵

我在R中有一个矩阵,如下所示:

|1|2|3|
|1|2|3|
|1|2|3|
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以将整个矩阵顺时针旋转90度以获得这些结果?

|1|1|1|
|2|2|2|
|3|3|3|
Run Code Online (Sandbox Code Playgroud)

并再次旋转90度:

|3|2|1|
|3|2|1|
|3|2|1|
Run Code Online (Sandbox Code Playgroud)

r rotation matrix

49
推荐指数
3
解决办法
4万
查看次数

为什么诊断功能这么慢?[在R 3.2.0或更早版本]

我正在查看这个答案中的基准,并希望将它们与diag(用于不同的答案)进行比较.不幸的是,似乎diag需要很长时间:

nc  <- 1e4
set.seed(1)
m <- matrix(sample(letters,nc^2,replace=TRUE), ncol = nc)

microbenchmark(
  diag = diag(m),
  cond = m[row(m)==col(m)],
  vec  = m[(1:nc-1L)*nc+1:nc],
  mat  = m[cbind(1:nc,1:nc)],
times=10)
Run Code Online (Sandbox Code Playgroud)

评论:我测试了这些identical.我从这个家庭作业问题的答案中选了一个"cond" .结果类似于整数矩阵,1:26而不是letters.

结果:

Unit: microseconds
 expr         min          lq         mean       median          uq         max neval
 diag  604343.469  629819.260  710371.3320  706842.3890  793144.019  837115.504    10
 cond 3862039.512 3985784.025 4175724.0390 4186317.5260 4312493.742 4617117.706    10
  vec     317.088     329.017     432.9099     350.1005     629.460     651.376    10
  mat     272.147 …
Run Code Online (Sandbox Code Playgroud)

r matrix diagonal

43
推荐指数
1
解决办法
906
查看次数

R中的diag()函数

有没有办法diag()在不使用内置函数或迭代的情况下在Matrix中使用该函数?

   M<-matrix(1:9, ncol=3) # make a matrix 

    q5b<-function(M){ #function

    }
Run Code Online (Sandbox Code Playgroud)

我知道M[1,1],M[2,2]M[3,3]给我的输出相同diag(M).但是,如果没有for循环,我无法想到这样做的方法.

我的思维过程是我应该有一个条件,row index == column index然后矩阵然后打印该值.我很感激任何建议.

r

5
推荐指数
2
解决办法
2301
查看次数

标签 统计

r ×3

matrix ×2

diagonal ×1

rotation ×1