跨多行替换特定值
我有一个类似于这个演示表的多列和数百行的数据文件:
0.91304348 0.08333333 0.25000000 1.00000000 1.00000000 0.85714286 0.08333333 0.43478261 0.12500000 1.00000000 1.00000000 1.00000000 0.16666667 1.00000000 1.00000000
我想查看所有值并通过从值中减去 0.5 并将其替换为结果值来替换大于 0.5 的任何值。因此,例如,如果该值为 0.85714286,我会将该值替换为 0.35714286(即 0.85714286 - 0.5)。但是 <=0.5 的值应该保持原样。
这样,上面的演示表将如下所示;
0.41304348 0.08333333 0.25000000 0.50000000 0.50000000 0.55714286 0.08333333 0.43478261 0.12500000 0.50000000 0.50000000 0.50000000 0.16666667 0.50000000 0.50000000
我正在尝试在 R 中执行 for 循环,但到目前为止没有成功(作为初学者)
New_Table <-c()
for (i in 1:nrowTable) {
if (i > 0.5) {
New_Table <- (i - 0.5)
} else {
New_Table <- Table[i]
}
}
回答
我们可以创建一个逻辑矩阵并使用该索引通过减去并将其分配给那些相应的位置来替换值
i1 <- m1 > 0.5
m1[i1] <- m1[i1] - 0.5