as.Date
是一个使用S3方法调度的函数。也就是实际上有几个函数:
methods("as.Date")
# [1] as.Date.character as.Date.date as.Date.dates as.Date.default
# [5] as.Date.factor as.Date.numeric as.Date.POSIXct as.Date.POSIXlt
# see '?methods' for accessing help and source code
你打电话时as.Date(x)
,R 查看第一个对象的类并使用适当的 S3 方法。如果没有找到并且.default
函数存在,那么它将被用作“最后的手段”。
如果查看每个方法的源代码,您只会找到字符串"do not know how to convert"
in as.Date.default
:
as.Date.default
# function (x, ...)
# {
# if (inherits(x, "Date"))
# return(x)
# if (is.logical(x) && all(is.na(x)))
# return(structure(as.numeric(x), class = "Date"))
# stop(gettextf("do not know how to convert '%s' to class %s",
# deparse(substitute(x)), dQuote("Date")), domain = NA)
# }
如果它是已知类之一(character
, date
, dates
, factor
, numeric
, POSIXct
, or POSIXlt
,现在还没有Date
or logical
-NA
),那么它将运行特定的函数(其中都不包含该错误字符串)。这表明您的$v6
列是一个不同阶级。没有 MWE,这完全是猜测。
我建议你找到数据的实际类别
class(dataFrame$v6)
并找出如何将其转换为已知版本之一。
Edit
此外,请注意 R 是区分大小写。您的 MWE 使用小写v6
但你的列名是大写的。就这样怎么样
october2017$V7 <- weekdays(as.Date(oct$V6, format="%m/%d/%Y"))
当你看着october2017$v6
(小写),它返回NULL
,这会触发.default
的方法as.Date
.