24

有谁知道能够检索自己的IP地址(您正在使用的PC)的R函数?这将非常有帮助!提前谢谢了。

4

4 回答 4

36

system()您可以向操作系统发出命令:

  • 在 Windows 中,您可以使用ipconfig
  • 在 Linux 中,使用ifconfig

例如,在 Windows 上尝试system()使用参数调用以intern=TRUE将结果返回给 R:

x <- system("ipconfig", intern=TRUE)

这将返回:

x
 [1] ""                                                                   
 [2] "Windows IP Configuration"                                           
 [3] ""                                                                   
 [4] ""                                                                   
 [5] "Wireless LAN adapter Wireless Network Connection:"                  
 [6] ""                                                                   
 [7] "   Connection-specific DNS Suffix  . : tbglondon.local"             
 [8] "   Link-local IPv6 Address . . . . . : fe80::c0cb:e470:91c7:abb9%14"
 [9] "   IPv4 Address. . . . . . . . . . . : 10.201.120.184"              
[10] "   Subnet Mask . . . . . . . . . . . : 255.255.255.0"               
[11] "   Default Gateway . . . . . . . . . : 10.201.120.253"              
[12] ""                                                                   
[13] "Ethernet adapter Local Area Connection:"                            
[14] ""                                                                   
[15] "   Connection-specific DNS Suffix  . : tbglondon.local"             
[16] "   Link-local IPv6 Address . . . . . : fe80::9d9b:c44c:fd4d:1c77%11"
[17] "   IPv4 Address. . . . . . . . . . . : 10.201.120.157"              
[18] "   Subnet Mask . . . . . . . . . . . : 255.255.255.0"               
[19] "   Default Gateway . . . . . . . . . : 10.201.120.253"              
[20] ""                                                                   
[21] "Tunnel adapter Local Area Connection* 13:"                          
[22] ""                                                                   
[23] "   Media State . . . . . . . . . . . : Media disconnected"          
[24] "   Connection-specific DNS Suffix  . : "                            
[25] ""                                                                   
[26] "Tunnel adapter isatap.tbglondon.local:"                             
[27] ""                                                                   
[28] "   Media State . . . . . . . . . . . : Media disconnected"          
[29] "   Connection-specific DNS Suffix  . : tbglondon.local"             
[30] ""                                                                   
[31] "Tunnel adapter Teredo Tunneling Pseudo-Interface:"                  
[32] ""                                                                   
[33] "   Media State . . . . . . . . . . . : Media disconnected"          
[34] "   Connection-specific DNS Suffix  . : "                            

现在您可以使用grep以下命令查找行IPv4

x[grep("IPv4", x)]
[1] "   IPv4 Address. . . . . . . . . . . : 10.201.120.184"
[2] "   IPv4 Address. . . . . . . . . . . : 10.201.120.157"

并仅提取 IP 地址:

z <- x[grep("IPv4", x)]
gsub(".*? ([[:digit:]])", "\\1", z)
"10.201.120.184" "10.201.120.157"
于 2013-01-16T11:46:40.703 回答
9

我最近创建了一个最小的包ipify.org来做这件事。

使用很简单,可以使用devtools和github安装。

library(devtools) install_github("gregce/ipify")

一旦安装,它就像加载库和一个函数调用一样简单......

library(ipify) get_ip()

于 2017-05-26T04:13:10.877 回答
3

虽然@andrie 用非常通俗的语言解释了它,但我相信它对我们理解它的功能有很大帮助。

所以从那里只共享一个行代码而不安装任何其他包。

gsub(".*? ([[:digit:]])", "\\1", system("ipconfig", intern=T)[grep("IPv4", system("ipconfig", intern = T))])

希望这会有所帮助!

于 2017-12-19T07:07:05.100 回答
-4

这将准确检索您想要的内容:

system('ipconfig getifaddr en0')

192.168.1.73
于 2016-04-26T18:03:44.527 回答