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