专栏名称: YuLabSMU
专注于生物信息学、R语言和可视化,只有原创、拒绝爆款!
目录
相关文章推荐
51好读  ›  专栏  ›  YuLabSMU

你的数据被化了妆?

YuLabSMU  · 公众号  ·  · 2018-03-26 09:39

正文

小伙伴说他写个CSV文件,名字就变了,无缘无故 | 就被改了,还有些名字被强加了 X 。我注意到了他写的对象是 data.frame(d) ,这锅绝对是 data.frame 的。

我们可以试一下:

> d = matrix(rnorm(4), ncol=2)
> colnames(d) = c("A|B", "123")
> write.csv(data.frame(d))
"","A.B","X123"
"1",-0.601247669017546,0.802654193340092
"2",-0.128752028398414,0.430829592244036

没错,自己给变了。 来一张Drag Queen, 真的是同一人,你以为你约了个妹纸,结果却是扣脚大叔,R经常干这事🤡


其实如果我们不 data.frame 强转的话,一切都是OK的。

> write.csv(d)
"","A|B","123"
"1",-0.601247669017546,0.802654193340092
"2",-0.128752028398414,0.430829592244036

我们不防再试一下,自己转为 data.frame ,看看是不是这样,结果必须也是,所以这锅就是 data.frame 的。

> d = data.frame(d)
> colnames(d)
[1] "A.B"  "X123"

解决方案

既然转成 data.frame 之后,它变了,那我们就再变回去呗。

> colnames(d) = c("A|B", "123")
> colnames(d)
[1] "A|B" "123"
> write.csv(d)
"","A|B","123"






请到「今天看啥」查看全文