r - 用 for 循环替换数据框的值
问题描述
问题是:
1)如果有一个5行的数据框如下:
x = c(0,1,3,4,8)
y = c(3,4,6,8,9)
z = c(5,7,3,6,10)
xyz = data.frame(rbind(x,y,z))
x 0 1 3 4 8
y 3 4 6 8 9
z 5 7 3 6 10
如果数字小于 R 中使用 for 循环的每一行的平均值,我想用 0 替换这些数字。例如,如果(xyz[i,] < mean(xyz[i,] )
然后:
x 0 0 0 4 8
y 0 0 6 8 9
z 0 7 0 0 10
我使用 R 的 for 循环如下:
for(i in 1:3)
{
j = c(1:5)
if(xyz[i,j] < rowMeans(xyz[i,]))
xyz[i,j] = 0
}
警告信息: 1: In if (xyz[i, j] < rowMeans(xyz[i, ])) xyz[i, j] = 0 : 条件长度 > 1 并且只使用第一个元素…… 任何帮助表示赞赏!
解决方案
您不需要 for 循环。你可以简单地做,
xyz[xyz < rowMeans(xyz)] <- 0
推荐阅读
- c# - 如何上下移动虚拟listView项目?
- mongodb - 如何获取文档数组属性的串联列表?
- c# - 在 C# 接口中容纳来自 VB.Net 的参数化方法
- netsuite - NetSuite Suitescript 2.0 如何访问自定义项目选项记录?
- android - Kotlin Firebase onFailureListener 空异常
- reactjs - 如何更改 ag-grid 行数?
- angular - Angular中带有mat复选框的总和
- c# - Swagger 未加载 - 无法加载 API 定义:获取错误未定义
- javascript - JavaScript:创建将嵌套数组中的数据转换为具有多个对象的数组的函数
- angular - 在 mat-table 中加载初始值时不选中复选框