【问题标题】:data frame to matrix without padding numerics数据框到矩阵而不填充数字
【发布时间】: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]](但引用字符串)。

标签: r matrix


【解决方案1】:

这似乎有效:

as.matrix(format(d, trim=T))

#   x       a      
# 1 "10000" "a"    
# 2 "1"     "bbbbb"

【讨论】:

  • 因此三年来没有其他人费心在答案中提出解决方案,这样您就可以得到分数和分数。不过我会选择trim=TRUE
  • 我惊讶地发现它没有得到答复! :D
猜你喜欢
  • 1970-01-01
  • 2018-09-03
  • 2021-10-02
  • 1970-01-01
  • 2015-12-20
  • 2014-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多