首页 > 解决方案 > 粘贴的意外输出(data.frame(a=as.character(as.Date(“2019-12-31”))))

问题描述

#eg1:
paste(data.frame(a=as.character(as.Date("2019-12-31"))))
[1]"1"
#eg2:
paste(data.table(a=as.character(as.Date("2019-12-31"))))
[1]"2019-10-12"
#eg3:
paste(data.frame(a=as.Date("2019-12-31")))
[1] 18261

我的预期就像 eg2,但我不想使用 data.table

我只有一个问题:如何解决这个问题,包括 eg2 和 eg3 ?

标签: r

解决方案


当您将字符放入 data.frame 时,它​​会变成一个因素。当您打印一个因素时,似乎 data.table 和 data.frame 被强制不同。对于您的特定情况,我可以通过在使用粘贴之前取消列出并转换为字符来解决它。

> paste(as.character(unlist(data.frame(a=as.character(as.Date("2019-12-31"))))))
[1] "2019-12-31"

或者,您可以通过设置stringsAsFactors = FALSE并避免因子转换来避免这种情况。

> paste(data.frame(a=as.character(as.Date("2019-12-31")), stringsAsFactors = FALSE))
[1] "2019-12-31"

推荐阅读