2010-12-17 12 views
6

यह करना एक आसान बात होनी चाहिए। यहां पर जो उदाहरण मैंने पढ़े हैं वे थोड़ा और जटिल हैं और तकनीक वास्तव में मेरे लिए काम नहीं कर रही हैं।आर strsplit समस्या (आसान फिक्स?)

मैं

> typeof(id_string) 
[1] "character" 

और

> id_string 
[1] "1,2,5,6,10" 

id_string एक चर बुलाया है मुझे क्या करना इन मूल्यों को बाहर विभाजित है और उन्हें एक नया चर में स्टोर किया जाता है चाहता हूँ। इस तरह की है कि, उदाहरण के लिए:

x[1] = 1 
x[4] = 6 
x[5] = 10 

मैं

x <- strsplit(id_string,",") 

करने के लिए अल्पविराम के द्वारा इसे विभाजित करने की कोशिश की, लेकिन मैं तो बस मिल x = "1 2 5 6 10"

मैं यहाँ जो समान है पर this post के माध्यम से पढ़ सकते हैं और सोचा था कि कुछ

x <- read.csv(textConnection(id_string)) 

काम करेगा लेकिन इसका कोई फायदा नहीं होगा।

शायद मैं यह सोच रहा हूं। यदि आपके पास कोई विचार है तो कृपया मुझे बताएं। धन्यवाद।

उत्तर

7

सुनिश्चित नहीं है कि आप क्या गलत कर रहे हैं क्योंकि यह विज्ञापन के रूप में काम करता है।

> x <- unlist(strsplit("1,2,5,6,10", ",")) 
> x 
[1] "1" "2" "5" "6" "10" 
> x[1] 
[1] "1" 

ध्यान रखें कि strsplit रिटर्न एक list

+0

वाह हाँ, मैं इसके चारों ओर असूची भूल गया था। तुरंत जवाब देने के लिए धन्यवाद! – user546497

+0

@user - यदि आप हर समय संख्याओं से निपटने जा रहे हैं तो आप इसे 'as.numeric()' में भी लपेट सकते हैं। यदि आप इसे अक्सर ऐसा करते हैं, तो इसे सभी कस्टम फ़ंक्शन में डालने से आपको कुछ समय और टाइपिंग मिल जाएगी। – Chase

+1

एक्स <- read.csv (textConnection (id_string)) विधि मानती है कि आपके पास हेडर है, लेकिन x <- read.table (textConnection (id_string), sep = ",") के साथ डेटाफ्रेम वापस कर दिया होगा। –

0

ऊपर उल्लिखित स्ट्रस्प्लिट के साथ चिपके हुए शायद सबसे अच्छा है।

मुझे लगता है कि read.csv आप जो उम्मीद कर रहे थे वह नहीं कर रहा था क्योंकि यह एक शीर्षलेख की तलाश में था। आप कोशिश कर सकते हैं:

s <- "1,2,5,6,10" 
read.csv(textConnection(s), header=FALSE) 

स्पष्ट रूप से इसे हेडर की तलाश न करने के लिए कह रहा है। आपको अभी भी अपने नंबर को परिणामस्वरूप डेटा से बाहर खींचना होगा। फ्रेम हालांकि। आप निचले स्तर के फ़ंक्शन स्कैन के साथ जाने से बेहतर हो सकते हैं, जो आपको सीधे संख्याओं का वेक्टर देगा:

scan(textConnection(s), sep=",", quiet=TRUE) 
संबंधित मुद्दे