【发布时间】:2015-12-12 17:05:45
【问题描述】:
将数据框转换为矩阵时,R 将空格填充到数字列中:
> d=data.frame(x=c(10000,1),a=c("a","bbbbb"))
> as.matrix(d)
x a
[1,] "10000" "a"
[2,] " 1" "bbbbb"
as.matrix.data.frame 的源代码显示这是因为它使用format 转换为字符(而不是as.character),所以你得到:
> format(d$x)
[1] "10000" " 1"
而不是
> as.character(d$x)
[1] "10000" "1"
字符列未使用 format 进行格式化,因此它们不会被填充。
有没有一种简单的方法可以将 DF 转换为没有填充的矩阵?比在上面运行str_trim 更好吗?
【问题讨论】:
-
可能是
sapply(d, as.character) -
不确定它是否比
str_trim()更好,但trimws(as.matrix(d))也可以。 -
不是您问题的答案,但是您使用列是不同类型的矩阵的任何原因?另外,为了好玩,添加一列逻辑值......
-
将数据帧转换为 JSON,希望 JSON 格式尽可能简单。数据框被列名等修饰,而矩阵被转换为
[[a,b,c],[d,e,f],[g,h,i]](但引用字符串)。