R 使用高阶函数为矩阵中的所有行提供附加标识

标签 r attributes higher-order-functions

在 R 中,我有一个带有行名的矩阵,我想给每一行一个额外的标签/属性。也就是说,根据我测试的一些标准,我想使用 apply 或(一些高阶函数)来迭代矩阵中的所有行,并为每行提供一个附加标签/属性(正确的 R 是什么)这里的词汇单词?)。例如,我想将矩阵中的每一行标记为“红色”、“蓝色”或“白色”。

  1. 如何使用高阶函数将矩阵中的每一行标记为“红色”、“蓝色”或“白色”?
  2. 如何才能做到 1. 没有高阶函数而只有循环?

非常感谢所有帮助。

最佳答案

我想到了两种实现方式。
(1) 使用data.frame
(2)维护矩阵(更快)并有一个单独的向量用于索引

(1) 使用 data.frame

 myDF <- as.data.frame(myMatrix)

 myDF$color <- apply(myDF, 1, ColoringFunction)

 # grab all the "red" ones
 myDF[myDF$color=="red", ]

(2) 使用索引向量

 myMatrix # remains a matrix

 ColorIndex <- apply(myMatrix, 1, ColoringFunction)

 # grab all the "red" ones
 myMatrix[ColorIndex =="red", ]

 # to initialize the vector to a given value use: 
 ColorIndex <- rep("green", nrow(myMatrix))

哪里 myMatrix是你的原始数据,ColoringFunction(<matrix row>)是您用来确定颜色分配的函数。

关于R 使用高阶函数为矩阵中的所有行提供附加标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16403508/

相关文章:

javascript - 将变量传递给高阶函数

r - 在 R 中进行多重插补后计算预测均值(或预测概率)和 SE

list - 将函数列表应用于普通 lisp 中的列表

functional-programming - "Value Restriction"实际上意味着没有高阶函数式编程吗?

r - 管理不同来源的 R 对象

c++ - HDF5 (C++) 中的大属性

c# - 是否可以使用属性指定 COM 枚举字段名称?

r - do.call(rbind, list) 用于奇数列

r - 第一个和最后一个传入帖子之间的情感得分差异

R: big.matrix 乘法