用于更改数值的R位通配符
我想知道是否可以在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
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)