R 将日期类设置为在列表中指定名称的多个数据框列

R 将日期类设置为在列表中指定名称的多个数据框列,r,lubridate,R,Lubridate,这似乎很容易,但我找不到答案 我只希望将指定的变量转换为日期-实际上(不是本例)有许多列要转换为日期类。我在手动创建的列表中指定了这些列,如下所示。然后,我希望能够为这些列设置date类 数据: …for循环也不起作用 for (i in datecols) { setdates(i) } 我得到了解析错误 不幸的是,我似乎找不到答案,我想这比需要的更难。如果您不介意使用dplyr,您可以: library(dplyr) res <- mutate_at(df, vars(start

这似乎很容易,但我找不到答案

我只希望将指定的变量转换为日期-实际上(不是本例)有许多列要转换为日期类。我在手动创建的列表中指定了这些列,如下所示。然后,我希望能够为这些列设置date类

数据:

…for循环也不起作用

for (i in datecols) {
  setdates(i)
}
我得到了解析错误


不幸的是,我似乎找不到答案,我想这比需要的更难。

如果您不介意使用
dplyr
,您可以:

library(dplyr)
res <- mutate_at(df, vars(starts_with("date")), dmy)

#        date1  var1      date2   var2      date3
# 1 2012-06-19 harry 2012-06-08 london 2012-07-17
# 2 2012-10-19 sally 2012-11-07  paris 2012-09-18
# 3 2012-08-12  dick 2012-07-19 madrid 2012-11-19
库(dplyr)

res如果您不介意使用
dplyr
,您可以:

library(dplyr)
res <- mutate_at(df, vars(starts_with("date")), dmy)

#        date1  var1      date2   var2      date3
# 1 2012-06-19 harry 2012-06-08 london 2012-07-17
# 2 2012-10-19 sally 2012-11-07  paris 2012-09-18
# 3 2012-08-12  dick 2012-07-19 madrid 2012-11-19
库(dplyr)

res从列表中删除引号(“df$date1”、“df$date2”、“df$date3”)。有许多事情会阻止它按预期工作:1°将
“df$date1”
等放入字符串中。这是可能的,但它是一个更先进的一点,可能是坏的做法无论如何。2°您在
a%>%dmy(a)
中使用管道:这是多余的。请参阅
帮助(“%>%”)
。3°命名函数
setsomething
当它实际上没有设置任何内容时:R不会通过引用修改函数参数。唯一阻止OP代码工作的错误是不正确的引号。其他问题更具风格。嗯,是的,我不得不同意。我将“样式”解释为期望值。从列表中删除引号(“df$date1”、“df$date2”、“df$date3”)。有许多事情会阻止它按预期工作:1°将
“df$date1”
等放在字符串中。这是可能的,但它是一个更先进的一点,可能是坏的做法无论如何。2°您在
a%>%dmy(a)
中使用管道:这是多余的。请参阅
帮助(“%>%”)
。3°命名函数
setsomething
当它实际上没有设置任何内容时:R不会通过引用修改函数参数。唯一阻止OP代码工作的错误是不正确的引号。其他问题更具风格。嗯,是的,我不得不同意。我将“style”解释为期望值。根据上述内容,您如何适应在列表中查找变量名?您会使用%吗?手动键入列名有可能出现错误。最好以编程方式选择它们。但是如果这是您想要/需要的,您可以:
datecols_2适应上面的内容,您如何适应在列表中查找变量名?您会使用%吗?手动键入列名有可能出现错误。最好以编程方式选择它们。但如果这是您想要/需要的,您可以:
datecols\u 2
for (i in datecols) {
  setdates(i)
}
library(dplyr)
res <- mutate_at(df, vars(starts_with("date")), dmy)

#        date1  var1      date2   var2      date3
# 1 2012-06-19 harry 2012-06-08 london 2012-07-17
# 2 2012-10-19 sally 2012-11-07  paris 2012-09-18
# 3 2012-08-12  dick 2012-07-19 madrid 2012-11-19