簡體   English   中英

如何將相同的函數應用於 1 列不同的數據框?

[英]How to apply the same function to 1 column of different data frames?

我的 R 環境中有多個數據框,例如。 數據1、數據2、數據3。 第一列是具有標題“X”(所有數據框中的標題相同)的日期列,但其類顯示為字符。 所以我想在我的環境中所有數據幀的第一列上使用 as.Date() 函數。

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

上面的行適用於一個數據框。 但我想對所有數據框使用 for 循環。 我有一個所有數據框名稱的列表。

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

我嘗試執行以下操作

for (i in list) {
  i$x <- as.Date(i$x)
}

這不起作用。

任何幫助將不勝感激。

最好使用lapply這里避免for副作用:

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

試試

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

為了讓for循環正確評估數據框名稱 ( i ) 和變量名稱 ( x ),您需要使用[""]表示法。 請嘗試以下操作:

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

如果這不起作用,請使用dput()發布數據示例(請參閱如何制作出色的 R 可重現示例?

這是一個老問題,但沒有人給 OP 一個令人滿意的答案。 這是一個類似的問題

如何使用字符串來引用 R 中的數據框?

使用getassign

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

在這里,您正在處理副本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM