Python R中有z.fill函数吗
我有一个数据框Python R中有z.fill函数吗,python,r,width,fill,Python,R,Width,Fill,我有一个数据框 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 这样,连接值的总长度是一个固定的
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列的超变量,并认为这将有助于下游处理
我猜它应该在粘贴函数中,但不确定如何“填充因子”,使其具有固定宽度您可以使用
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$c您可以使用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
尝试sprintf(“%d%3s”,df$v,df$f)
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