2016-02-26 21 views
-1

我的數據幀的結構是這樣的:轉換間隔數字

'data.frame': 74 obs. of 7 variables: 
$ Scientific_Name       : Factor w/ 74 levels "Aesculus glabra",..: 1 2 3 4 5 6 7 8 9 10 ... 
$ Endangered.or.threatened     : int 0 0 1 0 1 1 0 1 1 0  ... 
$ Lat_spread        : num 12.95 1.22 13.18 11.23 15.74 ... 
$ Restricted_range       : int 0 0 0 1 0 1 0 1 0 0 ... 
$ Available         : int 1 1 0 1 1 0 0 0 0 1 ... 
$ Abiotic_adapted_not_including_availability: int 4 NA 3 3 4 3 4 4 4 4 ... 
$ Dispersal_score       : int 5 NA 2 2 9 2 4 1 5 4 ... 

我想使整列到數字載體。這是我的代碼:

> RestrictedY <- subset(Status_restricted_Wilcox, Endangered.or.threatened == 1, select = Restricted_range) 
> RestrictedY <- as.vector(RestrictedY) 
> RestrictedY <- as.numeric(RestrictedY) 
Error: (list) object cannot be coerced to type 'double' 
> Status_restricted_Wilcox <- read.csv("~/Documents/Honours_data_analysis/Status_restricted_Wilcox.csv", na.strings="NA_integer_") 
> View(Status_restricted_Wilcox) 
> RestrictedY <- subset(Status_restricted_Wilcox, Endangered.or.threatened == 1, select = Restricted_range) 
> RestrictedY <- as.vector(RestrictedY) 
> RestrictedY <- as.numeric(RestrictedY) 
Error: (list) object cannot be coerced to type 'double' 

我在做什麼錯?我的錯誤是作爲「雙重」出現的,但我不明白這件事是什麼。 謝謝!

回答

0

當您使用subset()時,與使用其他形式的子集在選擇單列時返回矢量不同,您將始終獲得data.frame。您不能強制data.frame爲原子數值。嘗試

RestrictedY <- subset(Status_restricted_Wilcox, Endangered.or.threatened == 1, select = Restricted_range)[[1]] 
#or 
RestrictedY <- subset(Status_restricted_Wilcox, Endangered.or.threatened == 1)$Restricted_range) 
# or 
RestrictedY <- with(Status_restricted_Wilcox, Restricted_range[Endangered.or.threatened == 1]) 

你不應該需要任何進一步的強制由於R通常是在必要時轉換爲數字整數不錯。