调用适用于矩阵或向量的行的通用代码

Posted

技术标签:

【中文标题】调用适用于矩阵或向量的行的通用代码【英文标题】:General code for calling a row that works for a matrix or a vector 【发布时间】:2013-09-18 19:53:41 【问题描述】:

当您不知道要引用矩阵还是向量时,是否有一种通用的方法来调用行?

我想将结果子集分配给精度大于 0.5 的结果,然后选择具有最高灵敏度的子集行。我在一个循环中多次重复这个过程。我遇到的问题是,在模型的某些运行中,许多行结果的准确度大于 0.5,而在某些运行中,只有一行的准确度大于 .5。

为了最准确地调用该行,我编写了代码。

# Subset matrix to just rows with accuracy greater than .5
acc_ID = which(new_data[,"accuracy"] >= 0.5)
new_data2 = new_data[acc_ID,] 

## Identify which row has the highest sensitivity   
max_sensitivity_ID = which(new_data2[,"sensitivity"] == max(new_data2[,"sensitivity"]))[1]

问题出在最后一行。如果只有一行精度 > .5。然后我需要删除逗号。

注意:这是大数据情况,我不会上传可复制的数据示例。我认为那里的某个人会知道一种在不复制问题的情况下调用行的通用方法。

【问题讨论】:

你是在调用一行,而不是一列,对吧? 谢谢@Frank,我修正了错误! 【参考方案1】:

使用drop=FALSE 确保new_data2 始终是一个矩阵。

new_data2 = new_data[acc_ID,,drop=FALSE]

【讨论】:

以上是关于调用适用于矩阵或向量的行的通用代码的主要内容,如果未能解决你的问题,请参考以下文章

用于删除 Map 中的指针值和指针向量的 C++ 通用代码

矩阵的行乘积和矩阵的列和

适用于 Android/iOS/WinPhone 的 Xamarin 通用层

用c ++创建矩阵

将矩阵的行乘以向量(低级优化)?

c++ boost进程间交换(复制)非共享和共享字符串向量