【发布时间】:2017-07-06 04:57:47
【问题描述】:
在尝试将我的 data.frame 的一列从字符串转换为日期对象时,我收到了一个意外的结果以及一条相当可怕的警告消息:
my_dataframe <- data.frame(date = c("20070610", "20170611"))
my_dataframe["date"] <- strptime(my_dataframe$date, format = "%Y%m%d")
# Warning message:
# In `[<-.data.frame`(`*tmp*`, "date", value = list(sec = c(NA_real_, :
# provided 11 variables to replace 1 variables
my_dataframe
# my_dataframe
# date
# 1 0
# 2 0
但是,如果我只是将 [<-.data.frame 运算符替换为 $<-.data.frame 运算符,我会收到我想要的结果,并且不会收到任何问题的警告:
my_dataframe <- data.frame(date = c("20070610", "20170611"))
my_dataframe$date <- strptime(my_dataframe$date, format = "%Y%m%d")
my_dataframe
# my_dataframe
# date
# 1 20070610
# 2 20170611
我现在正在以完全不同的方式进行此分析,但我发现这种行为差异确实令人痛苦,如果有人能解释为什么会发生这种情况,我将不胜感激。
谢谢!
【问题讨论】:
-
my_dataframe_1是什么?这是一个错字还是您正在处理不同的数据框? -
你学习过help("[")吗?
-
我发现
help("[.data.frame")更有用。 -
对于遇到类似问题的其他人,
help("[.data.frame]")中列出的关键细节是:For [ the replacement value can be a list: each element of the list is used to replace (part of) one column, recycling the list as necessary.
标签: r dataframe statistics