【发布时间】:2014-11-19 15:50:28
【问题描述】:
这似乎是一个足够简单的函数来编写,但我认为我误解了形式参数的要求/R 如何解析和评估函数。
我正在尝试编写一个函数,将"%m/%d/%Y"(属于data.frame df)形式的任何字符向量转换为日期向量,并将其格式化为"%m/%d/%Y",如下所示:
dateformat <- function(x) {
df$x <- (format(as.Date(df$x, format = "%m/%d/%Y"), "%m/%d/%Y"))
}
我在想……
dateformat(a)
... 将"a" 作为x 的实际参数并将其插入函数中,从而解析为:
df$a <- (format(as.Date(df$a, format = "%m/%d/%Y"), "%m/%d/%Y"))
但是,在运行dateformat(a) 时出现以下错误:
Error in as.Date.default(df$x, format = "%m/%d/%Y") :
do not know how to convert 'df$x' to class “Date”
有人可以解释为什么我对形式/实际参数和/或 R 函数解析/评估的理解不正确吗?谢谢。
更新
当然,对于我想要转换为日期的所有变量(例如,df$a、df$b、df$c),我可以只写
df$a <- (format(as.Date(df$a, format = "%m/%d/%Y"), "%m/%d/%Y"))
df$b <- (format(as.Date(df$b, format = "%m/%d/%Y"), "%m/%d/%Y"))
df$c <- (format(as.Date(df$c, format = "%m/%d/%Y"), "%m/%d/%Y"))
但我希望通过制作一个更通用的函数来提高我的编码技能,我可以向其中提供变量向量。例如,如果我有df$a 到df$z,我想转换为日期变量的所有字符变量怎么办?在我写了一个合适的函数之后,我可能会像这样运行它:
for (n in letters) {
dateformat(n)
}
【问题讨论】:
-
只需从公式中删除
df$x <-即可。还有你是怎么使用这个功能的? -
@rawr 删除
df$x <-后我仍然遇到同样的错误。查看我的编辑以了解理由以及我如何使用该功能。 -
函数中,x是通用输入,所以不需要df$x,只需x:
dateformat <- function(x) format(as.Date(x, format = "%m/%d/%Y"), "%m/%d/%Y")
标签: r