आप जो रूपांतरण चाहते थे, उसके बारे में आप पूरी तरह से विशिष्ट नहीं थे, इसलिए मैंने दशमलव मानों को गुणा किया जो मैंने सोचा था कि उपयुक्त हो सकता है (यह सोचकर कि तीन अंकों की वस्तुएं वास्तव में "आधार 256" संख्याओं में अंक समकक्ष थीं, फिर आधार 10 में फिर से प्रदर्शित की गईं)। यदि आप चाहते हैं कि स्थानों के क्रम को उलट दिया जाए, जैसा कि मैंने कहीं और सुझाव दिया है, तो आप दोनों समाधानों में 'वैल' की अनुक्रमणिका को उलट देंगे
convIP <- function(IP) { vals <- read.table(text=as.character(IP), sep=".")
return( vals[1] + 256*vals[2] + 256^2*vals[3] + 256^3*vals[4]) }
> convIP(dat$IP)
V1
1 2476281533
2 134990147
3 2352289344
4 173345204
5 2122844258
6 1153107520
(यह निर्दिष्ट करने के लिए आमतौर पर बेहतर आईटी अभ्यास है कि आप सही उत्तर क्या सोचते हैं ताकि परीक्षण किया जा सके। ऊपर बर्टेलसन की टिप्पणी तेज होगी और कारकों के रूप में 1000, 1000^2 और 1000^3 का निहित रूप से उपयोग करती है।)
मैं कोड को सरल बनाने में एक दरार ले रहा हूं लेकिन डर है कि Reduce("+", ...)
का उपयोग करने की आवश्यकता है इसे और अधिक जटिल बना सकता है। आप sum
का उपयोग नहीं कर सकते क्योंकि यह वेक्टरकृत नहीं है।
convIP <- function(IP) { vals <- read.table(text=as.character(IP), sep=".")
return( Reduce("+", vals*256^(3:0))) }
> convIP(dat$IP)
[1] 5737849088 5112017 2717938944 1245449 3925902848 16449610