R 无填充数字的数据帧到矩阵
将数据帧转换为矩阵时,R将空格填充为数字列:R 无填充数字的数据帧到矩阵,r,matrix,R,Matrix,将数据帧转换为矩阵时,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的源代码显示了这一点,因为它使用格式转换为字符(而不是as.character),因此您可以得到: > format(d$x) [1] "1000
> 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
的源代码显示了这一点,因为它使用格式
转换为字符(而不是as.character
),因此您可以得到:
> format(d$x)
[1] "10000" " 1"
而不是
> as.character(d$x)
[1] "10000" "1"
字符列没有格式化,因此它们不会被填充
有没有一种简单的方法可以将DF转换为无填充的矩阵?总比到处乱跑要好吧?这似乎有效:
as.matrix(format(d, trim=T))
# x a
# 1 "10000" "a"
# 2 "1" "bbbbb"
可能是
sapply(d,as.character)
不确定它是否比str_trim()
好,但是trimws(as.matrix(d))
也能工作。这不是对你问题的回答,而是你使用不同类型列的矩阵的原因吗?另外,为了好玩,添加一列逻辑值……将数据帧转换为JSON,需要尽可能简单的JSON格式。数据框被列名等修饰,而矩阵被转换成像[[a,b,c],[d,e,f],[g,h,i]
(但是被引用的字符串)。因此,没有其他人会在三年内费心在答案中加入一个解决方案,所以你得到了记号和分数。不过我还是选择了trim=TRUE
!我惊讶地发现它没有得到回答!:D