2016-10-25 71 views
1

我在我的R環境中有多個數據幀 例如。數據1,數據2,數據3。 第一列是標題爲 「X」(所有數據框中的標題相同)的日期列,但其類顯示爲字符。 所以我想在我的環境中的所有數據框的第一列使用as.Date()函數。如何將相同的功能應用於1列不同的數據幀?

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

上面的行對一個數據幀正常工作。但我想爲所有數據幀使用for循環 。我有一個所有數據幀的名稱列表。

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

我試着做以下

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

不工作。

任何幫助將不勝感激。

+0

您的對象'列表「是一個字符向量。所以在'i $ x'你可以嘗試類似''data1「$ x'(例如)。順便說一句:「不工作」是不夠的信息,當然你有錯誤信息。請在您的問題中輸入錯誤信息! – jogo

+0

當我運行錯誤(我在列表中){ i $ x < - as.Date(i $ x) }是i x中的錯誤:$運算符對原子向量無效 –

回答

0

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

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

如果這不起作用發佈使用dput()您的數據的例子(見How to make a great R reproducible example?

+0

上面的代碼運行但在那裏是否在日期列 –

1

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

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

的類中沒有變化請您詳細說明下面的代碼行如何工作函數(dx)dx < - transform(dx,as.Date(x) –

1

嘗試

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