我有一个载体
x <- c(-1, 0, 1, 2, 3)
我希望将所有小于1的值替换为1。
如何?
是否有无循环解决方案?
答案 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