我是R的新人,如果你能帮助我,我真的很感激。我想创建一个允许我更改向量内容的函数。我的想法是:我引入任何向量,然后如果一个向量的数量有1个字符,则该数字将转换为具有3个字符的数字,在数字前面添加“00”;如果数字有2个字符,则该函数将添加“0”,如果数字有3个字符,则该数字将相同。 强文 我有这个功能;当矢量从1开始时它起作用;但如果它以不同的数字开头,则会出现问题。 如果我的英语不太好,请原谅我,谢谢。
a <- 1:10
f5 <- function(a){
for(i in a){
if (nchar(a[i])==1){
a[i] <- paste("00",a[i],sep ="")
}
if (nchar(a[i])==2){
a[i] <- paste("0",a[i],sep ="")
}
if (nchar(a[i])==3){
a[i] <- paste(a[i],sep ="")
}
}
a
}
答案 0 :(得分:3)
使用可添加前导零的sprintf
功能:
# test vector
v <- 1:10
> cat(sprintf("%03d", v))
001 002 003 004 005 006 007 008 009 010
只需更改&#34; d&#34;前面的数字。更改前导零的数量。
# More examples:
v2 <- c(1, 50, 999)
> cat(sprintf("%03d", v2))
001 050 999
您实际上也可以更改元素,而不仅仅是打印它们:
v2 <- c(1, 50, 999)
v3 <- sprintf("%03d", v2)
> v3
[1] "001" "050" "999"
> class(v3)
[1] "character"
将此方法与naltipar的方法进行比较:
> all.equal(sapply(v2, add.zeros), v3)
[1] TRUE
他们相同