R: заполнить столбец фрейма данных значениями фрейма данных различного размера

$_SERVER['REMOTE_ADDR'] может фактически не содержать реальных IP-адресов клиента, поскольку он даст вам прокси-адрес для клиентов, подключенных через прокси-сервер, например. Однако это может быть то, что вы действительно хотите, в зависимости от того, что вы делаете с IP-адресами. Частный адрес RFC1918 у кого-то может не принести вам пользы, если вы скажете, пытаясь узнать, откуда происходит ваш трафик, или вспомнить, какой IP-адрес был последним подключен к пользователю, где может быть больше общедоступный IP-адрес прокси-сервера или шлюза NAT

Существует несколько HTTP-заголовков, таких как X-Forwarded-For, которые могут или не могут быть заданы различными прокси-серверами. Проблема в том, что это просто HTTP-заголовки, которые могут быть установлены кем угодно. Нет никаких гарантий относительно их содержания. $_SERVER['REMOTE_ADDR'] - это фактический физический IP-адрес, на который веб-сервер получил соединение и ответ будет отправлен. Все остальное - это произвольная и добровольная информация. Существует только один сценарий, в котором вы можете доверять этой информации: вы контролируете прокси-сервер, который устанавливает этот заголовок. Значение только в том случае, если вы знаете 100%, где и как был настроен заголовок, если вы прислушаетесь к нему для чего-то важного.

Сказав это, вот пример кода:

if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
    $ip = $_SERVER['REMOTE_ADDR'];
}

Редактор Примечание. Использование вышеуказанного кода имеет последствия для безопасности. Клиент может настроить всю информацию заголовка HTTP (т.е. $_SERVER['HTTP_...) на любое произвольное значение, которое он хочет. Таким образом, гораздо надежнее использовать $_SERVER['REMOTE_ADDR'], поскольку пользователь не может установить его.

От: http://roshanbh.com.np/2007/12/getting-real -ip-адрес-в-php.html

0
задан yPennylane 15 January 2019 в 16:58
поделиться

2 ответа

Простое решение R base - это использование match:

dat$group <- df$x[match(dat$z,df$y)]
dat
     z group
1  abl     A
2  abl     A
3  abl     A
4  abl     A
5  rtg     A
6  rtg     A
7  jaf     A
8  zfw  <NA>
9  zfw  <NA>
10 zfw  <NA>
11 thk     C
0
ответ дан Chris Ruehlemann 15 January 2019 в 16:58
поделиться

Вы пытаетесь сделать операцию join:

dplyr::left_join(dat, df, by = c('z' = 'y'))

     z group    x
1  abl    NA    A
2  abl    NA    A
3  abl    NA    A
4  abl    NA    A
5  rtg    NA    A
6  rtg    NA    A
7  jaf    NA    A
8  zfw    NA <NA>
9  zfw    NA <NA>
10 zfw    NA <NA>
11 thk    NA    C

Связанный дубликат будет иметь несколько различных стратегий, но я думаю, что было бы полезно узнать подходящий термин для такого рода операций.

0
ответ дан divibisan 15 January 2019 в 16:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: