如何用另一个框架(例如95到117)替换普通数字(例如84到106)的框架?

时间:2019-07-11 11:02:24

标签: r replace

我尝试过像

这样的replace函数
df$x<-replace(df$x,84:106, 95:117)

尝试使用seqc并使用lapply的不同变体形式,例如

df$x<-lapply(df$x, replace, 84:106, 95:117)

并再次使用cseq,但未获得理想的结果。

(恕我直言)最简单的解决方案

df$x[df$x==c(84:106)]<-c(95:117) 

也不起作用。

3 个答案:

答案 0 :(得分:0)

replace在这里似乎是不必要的:

df$x = df$x + 11

或者,如果您只想替换该范围内的数字,而不要替换其他数字:

in_range = df$x >= 84 & df$x <= 106
df$x[in_range] = df$x[in_range] + 11

答案 1 :(得分:0)

你可以

df$x <- ifelse(df$x >=84 & df$x <=106, x+11,x)

答案 2 :(得分:0)

假设您确实不希望执行+11操作,则可以执行以下操作:

library(data.table)
dt <- data.table(x = 1:5, y = 2:6)

dt[, x := replace(x, which(x %in% 2:5), 8:11)]

这样,您还可以这样做:

dt[, x := replace(x, which(x %in% 8:11), c(21, 24, 45, 65))]