【问题标题】:Paste0 in R returns strange values for datesR中的Paste0返回日期的奇怪值
【发布时间】:2020-12-11 01:41:54
【问题描述】:

我有一个 csv 文件作为更大工作的模板,内容如下:

date_field,string1,string2,numeric1,numeric2  
2019-03-09 00:00,abc,def,,0  
2019-03-09 00:02,ghi,jkl,458.4,8444  

我将它放入一个名为“testing”的变量中,并正在使用 paste 和 paste0,并执行了以下操作:

testing <- read.csv('C:\\Users\\blahblahblah...\\template.csv')
values <- paste(testing[1])
print(values)

结果:

[1] "1:2"

如果我在原始变量上运行打印,结果很正常:

print(testing[1])

        date_field
1 2019-03-09 00:00
2 2019-03-09 00:02

我已经用谷歌搜索了大约一个小时,但无法弄清楚出了什么问题。 “价值”不是正确的类型吗?

非常感谢Z

【问题讨论】:

    标签: r date dataset paste


    【解决方案1】:

    您的date_field 被作为一个因素导入。当你使用read.csv() 时,设置stringsAsFactors = FALSE。这会将您的字符串作为字符导入。如果 date_field 是一个字符,您的代码将按预期运行。如果您将 date_field 作为 POSIXct 或 Date 对象,您也会得到奇怪的结果。

    testing <- read.csv('C:\\Users\\blahblahblah...\\template.csv', stringsAsFactors = FALSE)
    

    【讨论】:

    • 谢谢!与以前相比有明显改进:[1] "c(\"2019-03-09 00:00\", \"2019-03-09 00:02\")" 为什么 c 和反斜杠呢?
    • 所以在幕后 data.frame 是一个列表,而要求 testing[1] 是要求列表中的第一个元素,这是一个向量。 c() 函数创建一个向量。反斜杠是一个转义字符,允许您在字符串中包含引号。如果你unlist你的专栏和collapse你的粘贴,你可能会得到你想要的:paste(unlist(testing[1]), collapse = ",")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多