2012-09-12 15 views
45

कोड एक सूची वस्तु मजबूर करने के लिए कैसे:टाइप करने के लिए 'डबल'

a <- structure(list(`X$Days` = c("10", "38", "66", "101", "129", "185", "283", 
           "374")), .Names = "X$Days") 

फिर a है

तरह
$`X$Days` 
[1] "10" "38" "66" "101" "129" "185" "283" "374" 

मैं सांख्यिक मानों की एक सरणी के लिए a मजबूर करने के लिए चाहते हैं, लेकिन मजबूर कार्यों लौट मुझे

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

धन्यवाद,

उत्तर

81

आप एक ही सांख्यिक वेक्टर और length(a) को a के सभी तत्वों को परिवर्तित करने के लिए चाहते हैं, तो है 1 से अधिक (ठीक है, भले ही वह लंबाई 1 का है), तो आप वस्तु पहले unlist सकते हैं और फिर परिवर्तित।

as.numeric(unlist(a)) 
# [1] 10 38 66 101 129 185 283 374 

ध्यान रखें कि यहां कोई गुणवत्ता नियंत्रण नहीं है। इसके अलावा, X$Days एक शक्तिशाली अजीब नाम।

22

यदि आपकी सूची कई तत्वों के रूप में है जिन्हें संख्यात्मक रूप में परिवर्तित करने की आवश्यकता है, तो आप इसे lapply(a, as.numeric) के साथ प्राप्त कर सकते हैं।

3

आप उस तत्व का चयन करने के लिए सूची सबसेटिंग का भी उपयोग कर सकते हैं, जिसे आप कनवर्ट करना चाहते हैं। यह उपयोगी होगा अगर आपकी सूची में 1 से अधिक तत्व थे।

as.numeric(a[[1]])

0

कुछ डेटा के साथ समस्याओं कर रहे हैं। पर विचार करें:

as.double(as.character("2.e")) # This results in 2 

एक अन्य समाधान:

get_numbers <- function(X) { 
    X[toupper(X) != tolower(X)] <- NA 
    return(as.double(as.character(X))) 
} 
संबंधित मुद्दे