2016-11-21 46 views
0

我有6列的数据集,我已经范围为[0,1]的每个与柱:- [R脚本[0,1]:(列表)对象不能被强迫为类型“双”

ranging<-function(x){(x-min(x))/(max(x)-min(x))} 
dfNorm<- lapply(df, ranging) 

当我再尝试从统计包我得到以下信息执行k均值功能:

Error: (list) object cannot be coerced to type 'double' 

我已经看到了在这个问题上的许多问题,但无法找出解决我的问题。与普通的数据集,dfNorm有列如下形式:

$AGE 
    [1] 0.47457627 1.00000000 0.10169492 0.54237288 0.37288136 0.64406780 0.06779661 0.61016949 0.77966102 0.15254237 0.38983051 0.06779661 0.22033898 0.69491525 0.72881356 0.72881356 0.74576271 0.50847458 0.03389831 0.01694915 
[21] 0.01694915 0.64406780 0.16949153 0.55932203 0.88135593 0.57627119 0.54237288 0.05084746 0.86440678 0.79661017 0.23728814 0.37288136 0.13559322 0.25423729 0.25423729 0.25423729 0.66101695 0.44067797 0.67796610 0.05084746 
[41] 0.50847458 0.16949153 0.18644068 0.03389831 0.44067797 0.42372881 0.30508475 0.13559322 0.08474576 0.76271186 0.25423729 0.59322034 0.69491525 0.49152542 0.83050847 0.33898305 0.10169492 0.55932203 0.08474576 0.35593220 
[61] 0.69491525 0.10169492 0.64406780 0.66101695 0.91525424 0.77966102 0.45762712 0.47457627 0.54237288 0.64406780 0.23728814 0.66101695 0.32203390 0.11864407 0.25423729 0.03389831 0.25423729 0.37288136 0.42372881 0.79661017 
[81] 0.40677966 0.05084746 0.64406780 0.18644068 0.49152542 0.67796610 0.71186441 0.01694915 0.35593220 0.11864407 0.27118644 0.03389831 0.20338983 0.55932203 0.47457627 0.06779661 0.42372881 0.27118644 1.00000000 0.93220339 
[101] 0.05084746 0.15254237 0.23728814 0.62711864 0.74576271 0.88135593 0.77966102 0.45762712 0.06779661 0.71186441 0.88135593 0.05084746 0.11864407 0.22033898 0.55932203 0.84745763 0.35593220 0.28813559 0.89830508 0.10169492 
[121] 0.61016949 0.18644068 0.81355932 0.05084746 0.44067797 0.37288136 0.25423729 0.91525424 0.74576271 0.83050847 0.25423729 0.55932203 0.45762712 0.81355932 0.13559322 0.49152542 0.67796610 0.45762712 0.30508475 0.08474576 
[141] 0.11864407 0.06779661 0.37288136 0.44067797 0.69491525 0.23728814 0.77966102 0.47457627 0.93220339 0.15254237 0.64406780 0.69491525 0.77966102 0.05084746 0.69491525 0.61016949 0.37288136 0.66101695 0.77966102 0.71186441 
[161] 0.03389831 0.27118644 0.66101695 0.11864407 0.61016949 0.10169492 0.27118644 0.40677966 0.54237288 0.71186441 0.27118644 0.38983051 0.74576271 0.13559322 0.27118644 0.86440678 0.11864407 0.13559322 0.38983051 0.27118644 
[181] 0.47457627 0.89830508 0.15254237 0.03389831 0.50847458 0.81355932 0.44067797 0.01694915 0.84745763 0.16949153 0.30508475 0.37288136 0.69491525 0.27118644 0.13559322 0.01694915 0.76271186 0.37288136 0.49152542 0.13559322 
[201] 0.27118644 0.59322034 0.13559322 0.30508475 0.06779661 0.44067797 0.67796610 0.77966102 0.61016949 0.69491525 0.22033898 0.37288136 0.01694915 0.61016949 0.11864407 0.44067797 0.32203390 0.11864407 0.88135593 0.00000000 
[221] 0.13559322 0.67796610 0.05084746 0.27118644 0.28813559 0.66101695 0.86440678 0.71186441 0.23728814 0.20338983 0.33898305 0.27118644 0.23728814 0.10169492 0.05084746 0.47457627 0.88135593 0.28813559 0.79661017 0.76271186 
[241] 0.35593220 0.32203390 0.47457627 0.86440678 0.52542373 0.64406780 0.62711864 0.08474576 0.81355932 0.27118644 0.33898305 0.13559322 0.79661017 0.66101695 0.91525424 0.76271186 0.66101695 0.10169492 0.76271186 0.93220339 
[261] 0.13559322 0.22033898 0.72881356 0.66101695 0.44067797 0.33898305 0.32203390 0.06779661 0.03389831 0.03389831 0.61016949 0.69491525 0.28813559 0.16949153 0.38983051 0.79661017 0.83050847 0.08474576 0.40677966 0.11864407 
[281] 0.67796610 0.18644068 0.35593220 0.27118644 0.59322034 0.88135593 0.20338983 0.35593220 0.69491525 0.23728814 0.27118644 0.38983051 0.01694915 0.66101695 0.52542373 0.81355932 0.67796610 0.01694915 0.64406780 0.52542373 

我想,在我的范围数据框成为一组名单?有关如何将其再次转换为数据框的帮助?

回答

2

尝试,使用[]

df[] <- lapply(df, ranging) 

这将从列表强制到数据帧保持其尺寸。

1

这是因为您正在使用返回列表对象的lapply。

像这样的东西应该工作:

> set.seed(1000) 
> df <- as.data.frame(matrix(rnorm(600),ncol = 6)) 
> ranging<-function(x){(x-min(x))/(max(x)-min(x))} 
> dfNorm<- as.data.frame(apply(as.matrix(df),2,ranging)) 
> head(dfNorm) 
     V1  V2  V3  V4 
1 0.5055243 0.2849368 0.5248265 0.4971919 
2 0.4254890 0.4827048 0.6406599 0.4289153 
3 0.5934110 0.5796791 0.5231206 0.3399791 
4 0.5956384 0.5592775 0.3369328 0.4250189 
5 0.4487460 0.2521909 0.5644026 0.1761759 
6 0.3323858 0.4641836 0.3847123 0.4604454 
     V5  V6 
1 0.7301030 0.6333670 
2 0.5510546 0.2246277 
3 0.6688892 0.5297624 
4 0.5433689 0.8144769 
5 1.0000000 0.6710413 
6 0.4461234 0.4734814 
> class(dfNorm) 
[1] "data.frame" 
相关问题