如何将相同的函数应用于1列不同的数据帧?

时间:2016-10-25 12:16:05

标签: r dataframe

我的R环境中有多个数据框 例如。数据1,数据2,数据3。 第一列是具有标题的日期列 “X”(所有数据框中的标题相同)但其类显示为字符。 所以我想在我环境中所有数据帧的第一列使用as.Date()函数。

func OrientationDidChange(notification: NSNotification) {
    var Orientation = UIDevice.currentDevice().orientation
    if Orientation == .LandscapeLeft || Orientation == .LandscapeRight {

    }
    else if Orientation == .Portrait {

    }

}

以上行适用于一个数据帧。但我想使用for循环     对于所有数据帧。我有一个所有数据框的名称列表。

data1$X <- as.Date(data1$X) 

我尝试过以下

list <- c("data1", "data2", "data3")

哪个不起作用。

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

最好在此使用lapply以避免for副作用:

lapply(c("data1","data2","data3"), function(dx){
  dx <- transform(dx,as.Date(x))
})

答案 1 :(得分:1)

尝试

date.columns <- c('date1','date2','date3') # all date columns
df[date.columns] <- lapply(df[date.columns], as.Date)

答案 2 :(得分:0)

要使for循环正确评估数据框名称(i)和变量名称(x),您需要使用[""]表示法。请尝试以下方法:

for (i in list) {
  i["x"] <- as.Date(i["x"])
}

如果这不起作用,请使用dput()发布您的数据示例(请参阅How to make a great R reproducible example?

答案 3 :(得分:0)

这是一个古老的问题,但是没人给OP一个令人满意的答案。 这是一个类似的问题

How to use a string to refer to a data frame in R?

使用getassign

for (i in list) {
  df <- get(i)
  df$X <- as.Date(df$X)
  assign(as.character(i), df, envir= .GlobalEnv)
}

您正在使用副本