【冰糖R语言】(串列)对象不能强制改变成‘double‘种类

错误原因:对list或者data.frame类型使用as.numeric()进行转换

解决方法:使用as.numeric()之前,先使用unlist()

具体分析:假设有一个需求,在数据转换过程中,需要将data.frame数据框转换为numeric数值类型

                  直接使用as.numeric()进行强制转换会报错

                  比如,定义以下一个3*2的data.frame对象:(list对象问题类同,不做举例)

                  【冰糖R语言】(串列)对象不能强制改变成‘double‘种类_第1张图片

                  如果直接使用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

 

你可能感兴趣的:(R,r语言)