Генерация фиктивной переменной

Вот мое редактирование этого отличного ответа - с добавленной способностью синтаксического анализа строк запроса с ключами без значений.

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.

66
задан Jaap 16 October 2017 в 09:47
поделиться

1 ответ

Мы можем также использовать 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
0
ответ дан 24 November 2019 в 13:57
поделиться