我想将数据帧的备用列的值更改为小于1的0
abc 1 ghf 3
def 3 ftr 6
scf 0.2 ugh 1
Run Code Online (Sandbox Code Playgroud)
第二列和第三列的所有小于1的值都应为零.
有没有办法在R中做到这一点?
这实际上有效,并且可能难以改进其简单性:
df[ df<1 ] <- 0
Run Code Online (Sandbox Code Playgroud)
替代方法(但不太紧凑):当与其一起使用时arr.ind=TRUE返回条件所在的行和列的两列矩阵TRUE.你可以使用它[<-.data.frame,但它需要作为数字索引来完成
idxs <- which(df <1, arr.ind=TRUE)
#Warning messages:
#1: In Ops.factor(left, right) : < not meaningful for factors
#2: In Ops.factor(left, right) : < not meaningful for factors
### Perfectly safe to ignore the warning
df[ idxs[,1], idxs[,2] ] <- 0
df
#------------------
V1 V2 V3 V4
1 abc 1 ghf 3
2 def 3 ftr 6
3 scf 0 ugh 1
Run Code Online (Sandbox Code Playgroud)