Arrays 比较数组和标量

Arrays 比较数组和标量,arrays,r,scalar,Arrays,R,Scalar,问题: 我想比较二维数组和标量变量,两者的数值都是(),您需要提供一个,但您的解决方案可能是 m= 3 # 3500 n= 4 # 4200 set.seed(123) m <- matrix(rnorm(m*n), m, n) m # [,1] [,2] [,3] [,4] # [1,] -0.5604756 0.07050839 0.4609162 -0.4456620 # [2,] -0.2301775 0.12928774

问题:

我想比较二维数组和标量变量,两者的数值都是(),您需要提供一个,但您的解决方案可能是

m= 3 # 3500
n= 4 # 4200
set.seed(123)
m <- matrix(rnorm(m*n), m, n)
m
#            [,1]       [,2]       [,3]       [,4]
# [1,] -0.5604756 0.07050839  0.4609162 -0.4456620
# [2,] -0.2301775 0.12928774 -1.2650612  1.2240818
# [3,]  1.5587083 1.71506499 -0.6868529  0.3598138

v = 1.5 # the value you want elements less than or equal to

m <= v
#       [,1]  [,2] [,3] [,4]
# [1,]  TRUE  TRUE TRUE TRUE
# [2,]  TRUE  TRUE TRUE TRUE
# [3,] FALSE FALSE TRUE TRUE

根据你的问题,我不能说这是否正是你想要的,但我创建了一个可能有用的示例:

mat <- matrix(1:14700000, 3500, 4200)

vector <- c(-1:-1000000)
scalar <- 1000000
mat[mat <= scalar]  <- c(-1:-1000000)

mat“哪个”可能有用:

> A <- matrix( sample(3500*4200)/(3500*4200),3500,4200 )

> b <- 0.3

> v <- A[which(A<=b)]

> system.time( for (n in 1:100) { A[which(A<=b)] } )
       User      System verstrichen 
      30.61        6.05       37.78 

> summary(v)
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
7.00e-08 7.50e-02 1.50e-01 1.50e-01 2.25e-01 3.00e-01 

> w <- unlist(A[A<=b])

> system.time( for ( n in 1:100) { unlist(A[A<=b]) } )
       User      System verstrichen 
      32.51        7.22       40.14 

> summary(w)
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
7.00e-08 7.50e-02 1.50e-01 1.50e-01 2.25e-01 3.00e-01 

> identical (v,w)
[1] TRUE
>A b v w相同(v,w)
[1] 真的

请给出一个小示例以及基于此的预期输出。有关指导原则,请检查您是否尝试使用谷歌
R subsetting
indx我开始对此进行评论,但我需要一个代码块。感谢大家的时间和投入。我是R编程和本论坛的新手。
#    [1] -0.56047565 -0.23017749  0.07050839  0.12928774  0.46091621 -1.26506123 -0.68685285 -0.44566197  1.22408180  0.35981383
mat <- matrix(1:14700000, 3500, 4200)

vector <- c(-1:-1000000)
scalar <- 1000000
mat[mat <= scalar]  <- c(-1:-1000000)
> A <- matrix( sample(3500*4200)/(3500*4200),3500,4200 )

> b <- 0.3

> v <- A[which(A<=b)]

> system.time( for (n in 1:100) { A[which(A<=b)] } )
       User      System verstrichen 
      30.61        6.05       37.78 

> summary(v)
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
7.00e-08 7.50e-02 1.50e-01 1.50e-01 2.25e-01 3.00e-01 

> w <- unlist(A[A<=b])

> system.time( for ( n in 1:100) { unlist(A[A<=b]) } )
       User      System verstrichen 
      32.51        7.22       40.14 

> summary(w)
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
7.00e-08 7.50e-02 1.50e-01 1.50e-01 2.25e-01 3.00e-01 

> identical (v,w)
[1] TRUE