我尝试过像
这样的replace
函数
df$x<-replace(df$x,84:106, 95:117)
尝试使用seq
和c
并使用lapply
的不同变体形式,例如
df$x<-lapply(df$x, replace, 84:106, 95:117)
并再次使用c
和seq
,但未获得理想的结果。
(恕我直言)最简单的解决方案
df$x[df$x==c(84:106)]<-c(95:117)
也不起作用。
答案 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))]