用于更改数值的R位通配符

用于更改数值的R位通配符,r,regex,dataframe,wildcard,R,Regex,Dataframe,Wildcard,我想知道是否可以在R中使用通配符函数来替换数据帧中的特定值 因此,如果我有c(10.32,10.34,10.35,10.45,10.56)的值,我想要一个函数,它将所有值替换为XX.X5到XX.X4(即10.45->10.44或10.35->10.34) 是否有一个替换函数可以用于此操作?我不确定通配符是什么意思。如果您只想从数据帧中缩放一列(即从中减去一个常量),那么考虑到R的矢量化性质,这是非常容易的 df$x <- df$x - .01 df$x这里有一个想法 n <- nc

我想知道是否可以在R中使用通配符函数来替换数据帧中的特定值

因此,如果我有
c(10.32,10.34,10.35,10.45,10.56)
的值,我想要一个函数,它将所有值替换为
XX.X5
XX.X4
(即
10.45->10.44
10.35->10.34


是否有一个替换函数可以用于此操作?

我不确定通配符是什么意思。如果您只想从数据帧中缩放一列(即从中减去一个常量),那么考虑到R的矢量化性质,这是非常容易的

df$x <- df$x - .01
df$x这里有一个想法

n <- nchar(x/5) == 4
x[n] <- x[n] - 0.01
x
#[1] 10.34 10.44 10.56

n您可以使用
gsub

dat <- as.numeric(gsub("5$", "4", dat))

# [1] 10.32 10.34 10.34 10.44 10.56

dat这正是我想要的-非常感谢!
dat <- as.numeric(gsub("5$", "4", dat))

# [1] 10.32 10.34 10.34 10.44 10.56
dat[round(dat %% 0.1,2) == 0.05] <- dat[round(dat %% 0.1,2) == 0.05] - 0.01
dat <- c(10.32, 10.34, 10.35, 10.45, 10.56)