【发布时间】:2014-09-19 10:23:05
【问题描述】:
假设我有一个矩阵(日期是列名和行名)
B=matrix(rep(1,16),ncol=4,nrow=4)
rownames(B) = c("2012-08-06","2012-08-13","2012-08-20","2012-08-27")
colnames(B) = c("2012-08-06","2012-08-13","2012-08-20","2012-08-27")
2012-08-06 2012-08-13 2012-08-20 2012-08-27
2012-08-06 1.0 1.0 1.0 1.0
2012-08-13 1.0 1.0 1.0 1.0
2012-08-20 1.0 1.0 1.0 1.0
2012-08-27 1.0 1.0 1.0 1.0
和查找:
lookup = c("2012-08-13","2012-08-20")
现在我有一个循环来查看每个查找值,并替换矩阵中具有该日期的列名或行名的数字 即我有一些逻辑可以获取每个查找值 并做一个向量替换 即向量 [somelogic,somelogic] = 新值 这是一个简化的例子:
for(i in lookup){
B[rownames(B) < i, colnames(B) > i] = 2
B[rownames(B) > i, colnames(B) == i] = 5
}
有没有办法用 sapply 或类似的东西来做到这一点?
【问题讨论】:
-
您能否提供您当前正在使用的循环,或者至少提供示例数据所需的输出?
-
我已经添加了示例
-
您的示例仍然不完整,因为您不能在字符串上使用
<和>,并且循环的每次迭代都做同样的事情。我想您正在寻找涉及which(rownames(b) == lookup[i])等的内容,但目前的信息尚不清楚。 -
它适用于我的,但很高兴它被转换为.Date
标签: r loops matrix vector sapply