Вот мое редактирование этого отличного ответа - с добавленной способностью синтаксического анализа строк запроса с ключами без значений.
var url = 'http://sb.com/reg/step1?param';
var qs = (function(a) {
if (a == "") return {};
var b = {};
for (var i = 0; i < a.length; ++i) {
var p=a[i].split('=', 2);
if (p[1]) p[1] = decodeURIComponent(p[1].replace(/\+/g, " "));
b[p[0]] = p[1];
}
return b;
})((url.split('?'))[1].split('&'));
ВАЖНО! параметр для этой функции в последней строке отличается. Это просто пример того, как можно передать произвольный URL-адрес. Вы можете использовать последнюю строку из ответа Бруно для анализа текущего URL.
Итак, что именно изменилось? С url http://sb.com/reg/step1?param=
результаты будут одинаковыми. Но с url http://sb.com/reg/step1?param
решение Bruno возвращает объект без ключей, а мой возвращает объект с ключом param
и undefined
.
Мы можем также использовать cSplit_e
от splitstackshape
. Используя данные @zx8754
df1 <- data.frame(id = 1:4, year = 1991:1994)
splitstackshape::cSplit_e(df1, "year", fill = 0)
# id year year_1 year_2 year_3 year_4
#1 1 1991 1 0 0 0
#2 2 1992 0 1 0 0
#3 3 1993 0 0 1 0
#4 4 1994 0 0 0 1
, Чтобы заставить его работать на данные кроме числового мы должны определить type
как "character"
явно
df1 <- data.frame(id = 1:4, let = LETTERS[1:4])
splitstackshape::cSplit_e(df1, "let", fill = 0, type = "character")
# id let let_A let_B let_C let_D
#1 1 A 1 0 0 0
#2 2 B 0 1 0 0
#3 3 C 0 0 1 0
#4 4 D 0 0 0 1