使用特定值提取数据框中的列

use*_*713 0 r dataframe

我想将数据帧的备用列的值更改为小于1的0

abc 1   ghf 3
def 3   ftr 6
scf 0.2 ugh 1
Run Code Online (Sandbox Code Playgroud)

第二列和第三列的所有小于1的值都应为零.

有没有办法在R中做到这一点?

42-*_*42- 5

这实际上有效,并且可能难以改进其简单性:

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)