2017-10-07 75 views
-1

我有這樣申請強制轉換爲字符

> class(df$Released) 
[1] "Date" 

一個數據幀列當我使用apply在載體,傳遞到FUN值被強制轉換爲字符

> apply(df[1, ], 1, function(x) class(x['Released'])) 
      1 
"character" 

這是怎麼回事?

+1

您正在告訴它跨行應用(在apply的第二個參數中標記爲1),併爲它提供一行,也就是1 [df [1,],然後詢問它的'Released'列的類。 。因此,這適用於只會查看「發佈」的第一個實例,因爲您如何定義應用和功能。運行'str(在df $ Released [1])'看看它是否與你的字符輸出一致.... – sconfluentus

+0

也感興趣https://stackoverflow.com/questions/18214431/r-apply-on-dataframe- how-to-avoid-implicit-character-conversion – user20650

+1

'df [1,]'仍然是一個數據框。當它是一個數據幀時,'apply'將它的'X'參數強制轉換爲一個矩陣。所以看看'as.matrix(df [1,])'看看發生了什麼。你也可以閱讀'help(apply)'。 –

回答

0

試試這個:

sapply(df, class) 

之所以:

使用適用()運行函數類()之前改變與as.matrix()的數據幀,並在過程中,所有列都會返回字符。同時,使用sapply()並不會採用as.matrix()這一步,因爲它設計用於處理矢量,所以您的類將被準確顯示。

+0

請您說明一下您的答案嗎? – cosmosa

+0

@ cosmos1990 - 好的,看看上面的修改。 – www

相關問題