矩阵和向量中的测试条件

用户名

我想检查此矩阵m是否为<= 1或> =10。如果是,我想更改另一个向量val的值如果val为“ A”,则应将其更改为“ B”,反之亦然。如果val为“ C”,则应将其更改为“ D”,反之亦然。如果矩阵m中没有任何值<= 1或> = 10,则它应返回val

m
     x y
[1,] 2 11
[2,] 4 6
[3,] 5 6
[4,] 0 6
[5,] 2 6

val = "A"

因此,输出应为

out 
"B"

我目前拥有的是以下

x = m[, 1]
y = m[, 2]

x.test = any(x <= 1)
x.test = cbind(x.test, any(x >= 10) )

y.test = any(y <= 1) 
y.test = cbind(y.test, any(y >= 10) ) 

 if (any(x.test)==TRUE || any(y.test)==TRUE && val == 'A')
  { val2 = 'B'
} else if (any(x.test)==TRUE || any(y.test)==TRUE && val == 'B') 
  { val2 = 'A'
} else if (any(x.test)==TRUE || any(y.test)==TRUE && val == 'C') 
  {val2 = 'D'
} else if (any(x.test)==TRUE || any(y.test)==TRUE && val == 'D') 
  {val2 = 'C'
} else { val2 = val }

但似乎很麻烦,而且效果不佳...

智慧

您可以创建一个像字典一样工作的数据框,并在val2满足条件的情况下帮助您找到相应的数据框同时,您无需分别测试矩阵的每一列,就像一个D向量一样,一个语句就足够了:

dicFrame <- data.frame(val = c("A", "B", "C", "D"), val2 = c("B", "A", "D", "C"), stringsAsFactors = F)

#  val val2
#1   A    B
#2   B    A
#3   C    D
#4   D    C

val = "A"
val2 = if(any(mat >= 10 | mat <= 1)) dicFrame[dicFrame$val == val, 'val2'] else val
val2
# [1] "B"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

优化:在R中对几种矩阵进行条件测试和提取

来自分类Dev

在Clojure中测试向量和嵌套向量

来自分类Dev

在MATLAB中向量化矩阵的加权和

来自分类Dev

R中的矩阵和向量乘法运算

来自分类Dev

无法在keras中划分矩阵和向量

来自分类Dev

Matlab中的向量化矩阵和向量运算

来自分类Dev

如何比较满足条件的向量和矩阵列?

来自分类Dev

向量和矩阵

来自分类Dev

比较矩阵和向量

来自分类Dev

向量的频率-矩阵中的向量

来自分类Dev

矩阵表中的匹配和条件格式

来自分类Dev

如何在考虑位置的MATLAB中添加矩阵和向量

来自分类Dev

core.matrix中矩阵和向量的元素明智乘法

来自分类Dev

获取向量中矩阵索引的列名和行名

来自分类Dev

TensorFlow中矩阵和向量的高效逐元素乘法

来自分类Dev

点在C#中的矩阵和列向量之间相乘

来自分类Dev

core.matrix中矩阵和向量的元素明智乘法

来自分类Dev

Eigen 中的稀疏矩阵和向量加法广播

来自分类Dev

如何测试R中矩阵的每个元素是否满足条件?

来自分类Dev

矩阵类和测试

来自分类Dev

在MATLAB中将列向量的矩阵分离为训练和测试数据

来自分类Dev

矩阵和向量的点积

来自分类Dev

遍历const矩阵和向量

来自分类Dev

在R中:如何测试列表或向量中矩阵元素的隶属关系

来自分类Dev

在R中:如何测试列表或向量中矩阵元素的隶属关系

来自分类Dev

R,有没有功能能够仅搜索和返回符合向量/列表/矩阵行/列中某些条件的第一个元素?

来自分类Dev

创建条件和的向量

来自分类Dev

矩阵和向量的 R 点积仅使用向量中的元素

来自分类Dev

在 tensorflow 中创建训练和测试向量时出错

Related 相关文章

热门标签

归档