r - R data.table:melt() 自动转换为大写字母
问题描述
为什么 melt() 将维度名称从小写字母转换为大写字母?怎么能避免呢?请参见下面的示例。谢谢!
library(data.table)
# an array which dimnames are mixed numeric and characters (e.g. "inf")
ax <- array(round(rnorm(12)), dim = c(3,4), dimnames = list(y = c(0,1,"inf"), x = letters[4:7]))
# melt converts "inf" to "Inf"
dt <- setDT(melt(ax))
> head(dt)
y x value
1 0 d 0
2 1 d -1
3 Inf d 1
4 0 e 0
5 1 e 2
6 Inf e -1
解决方案
阅读?melt.array
显示此选项:
as.is
如果
FALSE
,默认情况下,dimnames 将使用type.convert
. [参见?type.convert
.] 如果TRUE
,它们将作为字符串保留。
melt(ax, as.is = TRUE)
y x value
1 0 d 1
2 1 d 1
3 inf d 0
4 0 e 0
5 1 e 2
6 inf e 0
7 0 f 0
8 1 f -1
9 inf f 0
10 0 g 1
11 1 g -1
12 inf g -1
因此,此行为来自type.convert(c("0", "1", "inf"))
基本包 utils。来自?type.convert
:
包含可选空格的其他向量,后跟其他十进制或十六进制常量(请参阅
?NumericConstants
),或NaN
,Inf
或infinity
(忽略大小写)或值 fromna.strings
被转换为数字。
推荐阅读
- java - Spring 将 Autowired SessionAttribute 注入服务层
- excel - 为 Excel 电子表格插入小计
- javascript - 如何使用 CSS-Grid 和 javascript 制作图像幻灯片
- google-apps-script - 使用单独工作表中的宏清除单元格
- java - 有什么方法可以在paintComponent中获取参数吗?
- javascript - 更新后 Outlook javascript 失败
- mql4 - 使 EX4 指标仅在几天内可供测试
- node.js - 快递服务器发帖两次,正好相隔两分钟?
- python - 如何使用 Numba 创建 dict 类型的类属性?
- javascript - 如何将日期对象转换为仅输出 hh:mm am/pm