如何控制整数类型列的data.frame中的粘贴行为?

mpi*_*tas 5 r

下面是示例代码,它产生了有趣的输出:

> gg<-data.frame(x=c("a","b"),y=as.integer(c(1000,100000)))
> gg
  x      y
1 a   1000
2 b 100000
> apply(gg,1,paste,collapse="")
[1] "a  1000" "b100000"
> apply(gg[1,],1,paste,collapse="")
      1 
"a1000" 
Run Code Online (Sandbox Code Playgroud)

在第一次apply运行中,R以某种方式知道如何填充额外的空格.它是如何做到的,是否有可能控制这种行为?

Jos*_*ich 6

apply仅适用于数组或矩阵,因此首先必须将data.frame转换为矩阵. as.matrix(gg)创建填充.

as.matrix.data.frame,填充是由format(format.default实际上)调用引起的,最终调用prettyNum. prettyNum有一个preserve.width默认值为的参数"common".

如果您想要更好地控制此行为,请在调用之前将data.frame中的每一列转换为字符向量apply:

gg[,2] <- as.character(gg[,2])
apply(gg,1,paste,collapse="")
# [1] "a1000"   "b100000"
Run Code Online (Sandbox Code Playgroud)