替换R中低于阈值的所有值

时间:2013-12-04 20:27:21

标签: r

我有一个载体

x <- c(-1, 0, 1, 2, 3)

我希望将所有小于1的值替换为1。

如何?

是否有无循环解决方案?

4 个答案:

答案 0 :(得分:26)

使用替换的逻辑索引:

x[ x<1 ] <- 1

答案 1 :(得分:9)

pmax是这个

的好候选人
  > pmax(x, 1)
    [1] 1 1 1 2 3

答案 2 :(得分:6)

其他解决方案更合适。这只是为了好玩:

(x > 1) * (x - 1) + 1
#[1] 1 1 1 2 3

简单替换(@Matthew Lundberg)是最有效的解决方案:

library(microbenchmark)
microbenchmark(pmax(1, x),
               "[<-"(x, x < 1, 1),
               (x > 1) * (x - 1) + 1)

# Unit: microseconds
#                   expr    min      lq  median      uq    max neval
#             pmax(1, x) 15.494 16.2545 16.5165 16.9365 52.165   100
#     `[<-`(x, x < 1, 1)  1.466  1.6920  2.3325  2.7485 23.683   100
#  (x > 1) * (x - 1) + 1  2.084  2.2870  2.7880  3.2080  8.958   100

答案 3 :(得分:1)

另一种选择是print(list_of_dfs['df1']) print(list_of_dfs['df2'])

replace