bal*_*our 1 printf r character
我是R的新手,只是教自己如何使用它.我在Windows 7上使用R版本3.0.1(如果相关的话).
我无法将factors的数据转换为仅字符.我的数据如下:
activity <- c("1","2","10","ZZ")
Run Code Online (Sandbox Code Playgroud)
我想要的是输出
activity <- c("01","02","10","ZZ")
Run Code Online (Sandbox Code Playgroud)
其中,每个字符串,如果只包含一个字符,应该以a 0为前缀(如上所示).
我尝试使用"as.character",但之前没有添加零.然后我发现sprintf并尝试:
activity <- sprintf("%02d", (activity))
# [1] "01" "02" "03" "04"
Run Code Online (Sandbox Code Playgroud)
这会在找到的任何单个数据前面添加零"0",但麻烦的是它会修改所有级别的数据(如上所示).
有谁知道这里有什么问题以及如何解决它?谢谢.
您可以使用正则表达式,尤其是使用后跟该数字sub替换任何单个数字的函数0.您应该这样做来替换因子的级别,activity以便相应地更改整个数据:
levels(activity) <- sub("^([0-9])$", "0\\1", levels(activity))
# [1] 01 02 10 ZZ
# Levels: 01 02 10 ZZ
Run Code Online (Sandbox Code Playgroud)
编辑:如果您不想只更换数字,而只需要1个字符的任何字符串,那么您只需替换[0-9]为..那是:
# suppose x is:
x <- c("1", "a", "Y", "!", "bb", "45")
x <- factor(x, levels=unique(x))
levels(x) <- sub("^(.)$", "0\\1", levels(x))
# [1] 01 0a 0Y 0! bb 45
# Levels: 01 0a 0Y 0! bb 45
Run Code Online (Sandbox Code Playgroud)