Проблема в том, что в столбце partner
в df
после большинства слов есть пробел:
.Label = c("Andrew", "Jim ", "Kurt ", "Lester ", "Mickey ", "Taylor ")
Это означает, что match()
не найдет точное совпадение, кроме для имени «Андрей», для которого он правильно возвращает этот индекс.
Чтобы исправить это, удалите пробелы из столбца partner
с помощью
df$partner = trimws(df$partner)
, тогда ваш код работает нормально:
> df[["partner"]] <- key[ match(df[['partner']], key[['name']] ) , 'id']
> df
name heart_rate age partner
1 J9 78 35 M4
2 M4 82 23 J9
3 A3 67 43 T7
4 T7 105 52 A3
5 L4 85 33 K5
6 K5 94 45 L4
Вот полезное руководство по кэшированию браузера.
Вы хотите установить управление кэша и заголовки даты истечения срока (назначающий дату в прошлом), например.
Cache-Control: no-cache
Expires: Fri, 31 Dec 1998 12:00:00 GMT
Хотя существуют некоторые очень разумные решения этого (заголовки управления кэшем, JavaScript, и т.д.), необходимо понять, что, после того как Вы отправили что-то клиенту, он находится вне Вашего контроля. Вы не можете гарантировать, что клиент будет рассматривать данные в способе, которым Вы хотели бы.
Например:
Извините :(
Заголовки управления кэшем (Истекает, Управление Кэша, Завершающий тег) будут обычно предотвращать кэширование страницы, вынуждая браузер запросить новую копию, в которой точке можно проверить состояние сессии. Они иногда игнорируются в интересах "производительности" все же.
Существует два подхода JavaScript, которые могли помочь Вам:
Оба из них, вероятно, будут иметь довольно неприятный эффект на удобство использования все же.
Установите кэширующиеся заголовки для запрещения любого кэширования страницы вообще. Это должно предотвратить даже саму страницу от того, чтобы быть показанным, когда пользователь поражает кнопку "Назад", если они не зарегистрированы.
Зависит от Вашего решения для входа в систему (SSO - Windows Live / OpenID по сравнению с собственной разработки, где информация о входе в систему хранится, и т.д.)... С тех пор 'назад' обычно не запрашивает страницу снова, я предложил бы очистить формы в JavaScript (OnLoad). На стороне сервера можно затем заполнить их (Page_Load). Очистите свою сессию и состояние отображения после выхода из системы.
Я попробовал этот код VB.NET IE и Firefox.
Ответ. Кэш. SetAllowResponseInBrowserHistory (ложь) ответ. Кэш. SetCacheability (HttpCacheability. NoCache) ответ. Кэш. SetNoStore () ответ. Истекает = 0
Это добивается цели, но я соглашаюсь с другими ответами, где Вы не можете гарантировать то, что будет вести себя клиентский браузер.