Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 无填充数字的数据帧到矩阵_R_Matrix - Fatal编程技术网

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

将数据帧转换为矩阵时,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] "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