2017-10-07 74 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

相关问题