R:如何转换列表中多个data.frames的日期列?

R:如何转换列表中多个data.frames的日期列?,r,list,dataframe,as.date,R,List,Dataframe,As.date,我在一个列表中有多个类似的data.frames,第一列是日期列。我需要使用as.Date将其转换为将被绘制的时间序列。但是,它不会将转换后的向量指定给列表中每个data.frame的正确向量 temporizar <- function(df){df$Semana <- as.Date(df$Semana, format = "%d/%m/%y")} lapply(files, temporizar) [[1]] [1] "2020-01-11" "2020-01-18" "2

我在一个列表中有多个类似的data.frames,第一列是日期列。我需要使用as.Date将其转换为将被绘制的时间序列。但是,它不会将转换后的向量指定给列表中每个data.frame的正确向量

temporizar <- function(df){df$Semana <- as.Date(df$Semana, format = "%d/%m/%y")}
lapply(files, temporizar)

[[1]]
 [1] "2020-01-11" "2020-01-18" "2020-01-25" "2020-02-01" "2020-02-08" "2020-02-15" "2020-02-22" "2020-02-29" "2020-03-07" "2020-03-14"
[11] "2020-03-21" "2020-03-28" "2020-04-04" "2020-04-11" "2020-04-18" "2020-04-25" "2020-05-02" "2020-05-09" "2020-05-16" "2020-05-23"
[21] "2020-05-30" "2020-06-06" "2020-06-13" "2020-06-20" "2020-06-27" "2020-07-04" "2020-07-11" "2020-07-18" "2020-07-25" "2020-08-01"
[31] "2020-08-08" "2020-08-15" "2020-08-22" "2020-08-29" "2020-09-05" "2020-09-12" "2020-09-19" "2020-09-26" "2020-10-03" "2020-10-10"
[41] "2020-10-17" "2020-10-24" "2020-10-31" "2020-11-07" "2020-11-14" "2020-11-21" "2020-11-28" "2020-12-05" "2020-12-12" "2020-12-19"
[51] "2020-12-26"

[[2]]
 [1] "2020-01-11" "2020-01-18" "2020-01-25" "2020-02-01" "2020-02-08" "2020-02-15" "2020-02-22" "2020-02-29" "2020-03-07" "2020-03-14"
[11] "2020-03-21" "2020-03-28" "2020-04-04" "2020-04-11" "2020-04-18" "2020-04-25" "2020-05-02" "2020-05-09" "2020-05-16" "2020-05-23"
[21] "2020-05-30" "2020-06-06" "2020-06-13" "2020-06-20" "2020-06-27" "2020-07-04" "2020-07-11" "2020-07-18" "2020-07-25" "2020-08-01"
[31] "2020-08-08" "2020-08-15" "2020-08-22" "2020-08-29" "2020-09-05" "2020-09-12" "2020-09-19" "2020-09-26" "2020-10-03" "2020-10-10"
[41] "2020-10-17" "2020-10-24" "2020-10-31" "2020-11-07" "2020-11-14" "2020-11-21" "2020-11-28" "2020-12-05" "2020-12-12" "2020-12-19"
[51] "2020-12-26"

[[3]]
 [1] "2020-01-11" "2020-01-18" "2020-01-25" "2020-02-01" "2020-02-08" "2020-02-15" "2020-02-22" "2020-02-29" "2020-03-07" "2020-03-14"
[11] "2020-03-21" "2020-03-28" "2020-04-04" "2020-04-11" "2020-04-18" "2020-04-25" "2020-05-02" "2020-05-09" "2020-05-16" "2020-05-23"
[21] "2020-05-30" "2020-06-06" "2020-06-13" "2020-06-20" "2020-06-27" "2020-07-04" "2020-07-11" "2020-07-18" "2020-07-25" "2020-08-01"
[31] "2020-08-08" "2020-08-15" "2020-08-22" "2020-08-29" "2020-09-05" "2020-09-12" "2020-09-19" "2020-09-26" "2020-10-03" "2020-10-10"
[41] "2020-10-17" "2020-10-24" "2020-10-31" "2020-11-07" "2020-11-14" "2020-11-21" "2020-11-28" "2020-12-05" "2020-12-12" "2020-12-19"
[51] "2020-12-26"

temporizar我认为您使用了read.delim或read.table来读取文件,默认情况下,字符列是因素

试着这样做:

DATES = as.character(
seq(as.Date("01/01/92",format="%d/%m/%y"), 
as.Date("31/12/92",format="%d/%m/%y"), 
length.out=100))

files = lapply(1:5,function(i)
data.frame(Semana = sample(DATES,5),value=runif(5)))
因此,您应该检查:

 str(files[[1]])
'data.frame':   5 obs. of  2 variables:
 $ Semana: Factor w/ 5 levels "1992-02-17","1992-05-31",..: 4 1 5 2 3
 $ value : num  0.892 0.551 0.457 0.957 0.453
那么下面的函数应该可以工作了

temporizar <- function(df){
df$Semana <- as.Date(as.character(df$Semana))
df
}
lapply(files, temporizar)
temporizar我用for循环解决了这个问题

for(i在名称(文件)中){

文件[[i]]$Semana使用此函数
temporizar不幸的是,它仍然是一个系数
。$Semana:factor w/51级别“01/02/20”,“01/08/20”,“16 28 40 1 12 36 48 10 22…”
检查您的日期格式,但使用
返回(df)
由@Ronaksah建议,它应该可以工作。您有df$Semana的示例吗?也不起作用。它转换正确,但不会将其分配给实际的对象“文件”。它在控制台中工作:
“data.frame”:51 obs.共12个变量:$Semana:Date,格式:“2020-01-11”“2020-01-18”“2020-01-25”“2020-02-01”…
但是它不会更改“files”对象。您必须重新分配它。files谢谢!您是对的。有时我们会错过非常琐碎的事情lol
for(i in names(files)){
  files[[i]]$Semana <- as.Date(files[[i]]$Semana, format = "%d/%m/%y")
  print(i)
  str(files[[i]])
}