Другие два варианта:
Базовый пакет:
df <- unstack(dat1, form = value ~ numbers)
rownames(df) <- unique(dat1$name)
df
sqldf
package:
library(sqldf)
sqldf('SELECT name,
MAX(CASE WHEN numbers = 1 THEN value ELSE NULL END) x1,
MAX(CASE WHEN numbers = 2 THEN value ELSE NULL END) x2,
MAX(CASE WHEN numbers = 3 THEN value ELSE NULL END) x3,
MAX(CASE WHEN numbers = 4 THEN value ELSE NULL END) x4
FROM dat1
GROUP BY name')
У нас была ситуация, когда нам нужно было сохранить хэш URL-адресов через обратную связь ASP.Net. Поскольку браузер не отправляет хэш на сервер по умолчанию, единственный способ сделать это - использовать Javascript:
window.location.hash
) и сохраните его в скрытом поле ввода на стороне сервера. Поместите это в DIV с идентификатором «urlhash
», чтобы мы могли легко найти его позже. window.location.hash again
) и / или выполните другие действия. Мы использовали jQuery для упрощения выбор поля и т. д. ... в целом он вызывает несколько вызовов jQuery, один для сохранения значения, а другой - для его восстановления.
Перед подачей:
$("form").submit(function() {
$("input", "#urlhash").val(window.location.hash);
});
При загрузке страницы:
var hashVal = $("input", "#urlhash").val();
if (IsHashValid(hashVal)) {
window.location.hash = hashVal;
}
IsHashValid()
может проверять «undefined
» или другие вещи, которые вы не хотите обрабатывать.
Кроме того, make конечно, вы, конечно, используете $(document).ready()
.
Это потому, что браузер не передает эту часть на сервер, извините.
RFC 2396 раздел 4.1:
Когда ссылка URI используется для выполнения поиска по идентифицированному ресурсу, необязательный идентификатор фрагмента, отделенный от URI посредством символа crosshatch ("#"), состоит из дополнительной справочной информации, которая должна быть интерпретирована пользовательским агентом после успешного завершения поиска. Таким образом, он не является частью URI, но часто используется в сочетании с URI.
blockquote>(выделено мной)
Просто, чтобы исключить возможность того, что вы на самом деле не пытаетесь увидеть фрагмент в GET / POST и на самом деле хотите узнать, как получить доступ к той части объекта URI, которая у вас есть в вашем серверном коде, она находится под Uri.Fragment ( Документы MSDN ).
Вероятно, единственный выбор - прочитать его на стороне клиента и перенести его вручную на сервер (GET / POST / AJAX). С уважением Артур
Вы также можете посмотреть, как играть с кнопкой «Назад» и историей браузера на Malcan
Возможное решение для запросов GET:
Новый формат ссылки: http://example.com/yourDirectory?hash=video01
Вызовите эту функцию к верхней части контроллера или http://example.com/yourDirectory/index.php
:
function redirect()
{
if (!empty($_GET['hash'])) {
/** Sanitize & Validate $_GET['hash']
If valid return string
If invalid: return empty or false
******************************************************/
$validHash = sanitizeAndValidateHashFunction($_GET['hash']);
if (!empty($validHash)) {
$url = './#' . $validHash;
} else {
$url = '/your404page.php';
}
header("Location: $url");
}
}