Anda tidak sepenuhnya spesifik tentang konversi apa yang Anda inginkan, jadi saya mengalikan nilai desimal dengan apa yang saya pikir mungkin sesuai (berpikir tiga item digit sebenarnya setara dengan digit dalam angka "basis 256" kemudian ditampilkan kembali di basis 10). Jika Anda ingin urutan lokasi dibalik, seperti yang saya lihat disarankan di tempat lain, Anda akan membalikkan pengindeksan 'vals' di kedua solusi
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
(Biasanya praktik TI yang lebih baik untuk menentukan apa yang menurut Anda sebagai jawaban yang benar sehingga pengujian dapat dilakukan. Komentar Bertelson di atas akan lebih cepat dan secara implisit menggunakan 1000, 1000^2 dan 1000^3 sebagai faktornya.)
Saya mencoba menyederhanakan kode tetapi takut perlu menggunakan Reduce("+", ...)
dapat membuatnya lebih kompleks. Anda tidak dapat menggunakan sum
karena tidak divektorkan.
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