错误原因:对list或者data.frame类型使用as.numeric()进行转换
解决方法:使用as.numeric()之前,先使用unlist()
具体分析:假设有一个需求,在数据转换过程中,需要将data.frame数据框转换为numeric数值类型
直接使用as.numeric()进行强制转换会报错
比如,定义以下一个3*2的data.frame对象:(list对象问题类同,不做举例)
如果直接使用as.numeric()将会出现问题,但是加上unlist()则不会:
as.numeric()将对象强制转换为numeric类型(numeric与double类型等价),且返回一个vector
unlist()将list结构转换为vector形式
因此,as.numeric(unlist(DDD))的过程是这样的:data.frame --> vector --> vector,中间vector的names不为空
最后,unlist()的参数如果本身就是原子vector,则不会起作用(因为没必要),names也不会变化
所以,我有时候会“乱用”unlist(),end