我试图将数据框中的日期列转换为日期时间对象。
table2
为什么一种索引方法有效而另一种方法无效?
我更愿意使用后者,因为这将包含在函数中,过去我在使用函数中的dates <- c("11/28/2016 10:08 AM", "11/28/2016 10:08 AM", "11/28/2016 10:08 AM")
dates <- as.data.frame(dates)
# Using a $ to index the column works
dates$dates <- as.POSIXlt(dates$dates, format="%m/%d/%Y %I:%M %p")
dates
1 2016-11-28 10:08:00
2 2016-11-28 10:08:00
3 2016-11-28 10:08:00
# But this does not work
dates[,'dates'] <- as.POSIXlt(dates[,'dates'], format="%m/%d/%Y %I:%M %p")
Warning message:
In `[<-.data.frame`(`*tmp*`, , "dates", value = list(sec = c(0, :
provided 11 variables to replace 1 variables
和$
索引列时遇到问题。
答案 0 :(得分:0)
@akrun是正确的as.POSIXlt
不是矢量,不能简单地作为列添加到数据帧。对于列表,[[
用于选择单个元素,而[
则返回所选元素的列表。
dates[['dates']] <- as.POSIXlt(dates[['dates']], format="%m/%d/%Y %I:%M %p")
dates
1 2016-11-28 10:08:00
2 2016-11-28 10:08:00
3 2016-11-28 10:08:00