R中有z.fill函数吗

is there a z.fill function in R

我有一个数据框

df=data.frame(f=c('a','ab','abc'),v=1:3)

并创建一个新列:

df$c=paste(df$v,df$f,sep='')

结果是

> df
    f v    c
1   a 1   1a
2  ab 2  2ab
3 abc 3 3abc

我希望 c 列采用以下格式:

> df
    f v    c
1   a 1 1  a
2  ab 2 2 ab
3 abc 3 3abc

这样连接值的总长度是一个固定数字(在本例中为 4 个字符),并且将选择一个字符来填充它,例如 | (在本例中为 \w)。

R中有这样的函数吗?我认为它类似于 python 中的 z.fill 函数,但我不是 python 程序员,并且更愿意留在 R 中而不是切换语言进行处理。最终,我创建了一个 10 列的超变量,并认为这有助于下游处理

我猜它会在粘贴功能中,但不确定如何'fill a factor'使其具有固定宽度

您可以使用formatC功能如下

df$c <- paste(df$v, formatC(as.character(df$f), width = 3, flag = " "), sep = "")

df
    f v    c
1   a 1 1  a
2  ab 2 2 ab
3 abc 3 3abc

数据

df <- data.frame(f = c('a','ab','abc'), v=1:3)

您可以使用 format() 函数来漂亮地打印列的值。例如:

> format(df$f, width = 3, justify = "right")
[1] "  a" " ab" "abc"

所以你的代码应该是:

df <- within(df, {
  c <- paste0(v, format(f, width = 3, justify = "right"))
})
df

结果:

> df
    f v    c
1   a 1 1  a
2  ab 2 2 ab
3 abc 3 3abc