[英]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 一個令人滿意的答案。 這是一個類似的問題
使用get
和assign
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.