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