R 测试矩阵的一行是否等于给定向量
如何构造一个函数来计算矩阵mat的任何一行是否等于下面代码中的向量vec:R 测试矩阵的一行是否等于给定向量,r,matrix,vector,R,Matrix,Vector,如何构造一个函数来计算矩阵mat的任何一行是否等于下面代码中的向量vec: set.seed(000) mat <- matrix(rnorm(20),4,5) vec <- c(1.3297993, -0.9285670, 0.7635935, -0.2992151, 0.4356833) mat[3,] vec mat==vec 此外,如何确定mat中是否至少有一个vec值 注意:mat==vec应等于TRUE,即如果mat-vec类似于以下内容,则mat-vec==0:
set.seed(000)
mat <- matrix(rnorm(20),4,5)
vec <- c(1.3297993, -0.9285670, 0.7635935, -0.2992151, 0.4356833)
mat[3,]
vec
mat==vec
此外,如何确定mat中是否至少有一个vec值
注意:mat==vec应等于TRUE,即如果mat-vec类似于以下内容,则mat-vec==0:
compare <- function(mat, vec, tol=1e-5)
{
ok <- apply(mat, 1, function(v) {
all(abs(v - vec) < tol)
})
any(ok)
}
v <- 1:5
m <- matrix(rnorm(25), nrow=5)
compare(m, v)
# FALSE
m[1,] <- v
compare(m, v)
# TRUE
大概是这样的:
compare <- function(mat, vec, tol=1e-5)
{
ok <- apply(mat, 1, function(v) {
all(abs(v - vec) < tol)
})
any(ok)
}
v <- 1:5
m <- matrix(rnorm(25), nrow=5)
compare(m, v)
# FALSE
m[1,] <- v
compare(m, v)
# TRUE
首先,由于从第9页开始,您的示例将不起作用 这应该可以做到:
set.seed(000)
mat <- round(matrix(rnorm(20),4,5), digits = 7)
vec <- c(1.3297993, -0.9285670, 0.7635935, -0.2992151, 0.4356833)
要确定mat中是否至少有一个vec值,可以执行以下操作:
length(vec[which(vec %in% mat)])
结果反映了在向量和矩阵之间找到的匹配数 首先,由于从第9页开始,您的示例将不起作用 这应该可以做到:
set.seed(000)
mat <- round(matrix(rnorm(20),4,5), digits = 7)
vec <- c(1.3297993, -0.9285670, 0.7635935, -0.2992151, 0.4356833)
要确定mat中是否至少有一个vec值,可以执行以下操作:
length(vec[which(vec %in% mat)])
结果反映了在向量和矩阵之间找到的匹配数 你什么意思,它不起作用?只是重新检查了一下,对我来说很好。什么意思,它不起作用?只是重新检查了一下,对我来说很好。