Size: a a a

R (язык программирования)

2021 February 22

М

Марк in R (язык программирования)
Иван Поздняков
я, честно говоря, не могу себя представить ситуацию, когда этот оператор может понадобиться реально часто)
Когда учил матричное умножение - напрягало вводить в ручную))
источник

A

Andrey in R (язык программирования)
Dm Kb
Коллеги, прошу прощения, если уже вопрос обсуждался... меня и, вероятно, не только меня интересует, насколько в повседневной практике пользователи R сталкиваются с необходимостью/удобством использования Python.
Лично мне пришлось с таким столкнуться всего пару раз: когда я не нашёл функцию для обработки хитрозакодированных гео данных в R и второй раз, когда увлёкся чат-ботами и платформой RASA, где Python - это основной клей функциональной логики.
Дип лернинг
источник

SG

Sergey Gumerov in R (язык программирования)
Коллеги, подскажите
какой функцией можно получить таблицу по имени листа (определяемого динамически через переменную) упакованного опять же в листе.

Пример
class(time)  tibble()
class(space)  tibble()

d <- 1
e <- "time"

c <- list (a = list (time, space), b = list (time, space))

Ищу альтернативное c[a]$time с использованием переменной d  или e
источник

A

Andrey in R (язык программирования)
Функция get() нужна. Или с NSE возиться
источник

SG

Sergey Gumerov in R (язык программирования)
NSE?
источник

DK

Dm Kb in R (язык программирования)
Non standard evaluation , думаю
источник

М

Марк in R (язык программирования)
Иван Поздняков
можно и на русском найти, наверное. Суть вот в чем:
нужно создать матрицу, где по строкам айди, а по столбцам айпи
переменожить матрицу на транспонированную по правилам линейной алгебры
вот и получилась матрица смежности: каждая клетка матрица - сумма совместных пересечений
Причем, можно как создать сеть с вершинами id, так и сеть с вершинами ip
A <- matrix(c(1, 0, 0, 0, 0, 1, 1, 1, 0 , 1, 0 , 1), nrow = 3, dimnames = list(letters[1:3], c("one", "two", "three", "four")))
A
t(A) %*% A
A %*% t(A)
Чего то застрял я на матрице смежности. Привел свой frame к виду - в первом столбце id людей, во втором их айпишники. То есть это длинный формат, id людей, у которых более одного ip повторяются. Думал просто привести таблицу к широкому формату через pivot_wider и получится исходная матрица для транспонирования и перемножения, однако эта функция делает таблицу с одной строкой, все id людей, приходящихся на один ip кладет как бы в вектор. Как заставить вытянуть их в строки?)
источник

М

Марк in R (язык программирования)
Марк
Чего то застрял я на матрице смежности. Привел свой frame к виду - в первом столбце id людей, во втором их айпишники. То есть это длинный формат, id людей, у которых более одного ip повторяются. Думал просто привести таблицу к широкому формату через pivot_wider и получится исходная матрица для транспонирования и перемножения, однако эта функция делает таблицу с одной строкой, все id людей, приходящихся на один ip кладет как бы в вектор. Как заставить вытянуть их в строки?)
Хотя, я что то гоню, мне же надо привести к такому виду, чтобы в ячейках матрицы было кол-во пересечений
источник

М

Марк in R (язык программирования)
Иван Поздняков
можно и на русском найти, наверное. Суть вот в чем:
нужно создать матрицу, где по строкам айди, а по столбцам айпи
переменожить матрицу на транспонированную по правилам линейной алгебры
вот и получилась матрица смежности: каждая клетка матрица - сумма совместных пересечений
Причем, можно как создать сеть с вершинами id, так и сеть с вершинами ip
A <- matrix(c(1, 0, 0, 0, 0, 1, 1, 1, 0 , 1, 0 , 1), nrow = 3, dimnames = list(letters[1:3], c("one", "two", "three", "four")))
A
t(A) %*% A
A %*% t(A)
В общем, как создать то такую матрицу из данных в длинном формате? 😁
источник

EP

Ed P in R (язык программирования)
Марк
Чего то застрял я на матрице смежности. Привел свой frame к виду - в первом столбце id людей, во втором их айпишники. То есть это длинный формат, id людей, у которых более одного ip повторяются. Думал просто привести таблицу к широкому формату через pivot_wider и получится исходная матрица для транспонирования и перемножения, однако эта функция делает таблицу с одной строкой, все id людей, приходящихся на один ip кладет как бы в вектор. Как заставить вытянуть их в строки?)
а зачем приводить? Некоторые пакеты для рисования графов вполне жрут длинные датасеты.

Я, правда, пропустил начало дискуссии, но когда мне неск. месяцев назад надо было нарисовать граф, то это все оказалось достаточно тривиально с пакетом visNetwork
https://datastorm-open.github.io/visNetwork/
источник

М

Марк in R (язык программирования)
Ed P
а зачем приводить? Некоторые пакеты для рисования графов вполне жрут длинные датасеты.

Я, правда, пропустил начало дискуссии, но когда мне неск. месяцев назад надо было нарисовать граф, то это все оказалось достаточно тривиально с пакетом visNetwork
https://datastorm-open.github.io/visNetwork/
Насколько я понимаю, например, пакету statnet нужна или матрица смежности или список рёбер. И нужно их как то создать из исходного дата сета
источник

М

Марк in R (язык программирования)
Ed P
а зачем приводить? Некоторые пакеты для рисования графов вполне жрут длинные датасеты.

Я, правда, пропустил начало дискуссии, но когда мне неск. месяцев назад надо было нарисовать граф, то это все оказалось достаточно тривиально с пакетом visNetwork
https://datastorm-open.github.io/visNetwork/
Посмотрю по ссылке, спс
источник

DK

Dm Kb in R (язык программирования)
Марк
Чего то застрял я на матрице смежности. Привел свой frame к виду - в первом столбце id людей, во втором их айпишники. То есть это длинный формат, id людей, у которых более одного ip повторяются. Думал просто привести таблицу к широкому формату через pivot_wider и получится исходная матрица для транспонирования и перемножения, однако эта функция делает таблицу с одной строкой, все id людей, приходящихся на один ip кладет как бы в вектор. Как заставить вытянуть их в строки?)
Думайте о графе как о наборе векторов. У вектора должно быть начало и конец и его длинна, поэтому столбцов должно быть минимум три. Далее делаете pivot_wider, но этого мало т.к. матрица может получится несимметричной. Поэтому до pivot_wider делайте tidy::expand() чтобы все комбинации вершин присутствовали
источник

EP

Ed P in R (язык программирования)
Dm Kb
Думайте о графе как о наборе векторов. У вектора должно быть начало и конец и его длинна, поэтому столбцов должно быть минимум три. Далее делаете pivot_wider, но этого мало т.к. матрица может получится несимметричной. Поэтому до pivot_wider делайте tidy::expand() чтобы все комбинации вершин присутствовали
Но зачем так сложно?
Длинного датасета from - to вполне достаточно. Т.е. в минимальном варианте 2 переменные всего. Если появляются другие атрибуты (длина, толщина, цвет, форма) - это все новые переменные
источник

DK

Dm Kb in R (язык программирования)
Ed P
Но зачем так сложно?
Длинного датасета from - to вполне достаточно. Т.е. в минимальном варианте 2 переменные всего. Если появляются другие атрибуты (длина, толщина, цвет, форма) - это все новые переменные
Я просто ответил как сделать  из длинного формата - матрицу. Вообще главное что нужно понять - это то, что должно быть таблица с рёбрами: “from” и “to”  и отдельная таблица с узлами nodes
источник

М

Марк in R (язык программирования)
Ed P
Но зачем так сложно?
Длинного датасета from - to вполне достаточно. Т.е. в минимальном варианте 2 переменные всего. Если появляются другие атрибуты (длина, толщина, цвет, форма) - это все новые переменные
Ну да, похоже что проще просто сделать left join таблицы с вершинами и признаком связи с самой с собой, получив таким образом from и to, потом создать сеть через функцию network::network, а потом и извлечь матрицу смежности
источник

DK

Dm Kb in R (язык программирования)
Sergey Gumerov
Коллеги, подскажите
какой функцией можно получить таблицу по имени листа (определяемого динамически через переменную) упакованного опять же в листе.

Пример
class(time)  tibble()
class(space)  tibble()

d <- 1
e <- "time"

c <- list (a = list (time, space), b = list (time, space))

Ищу альтернативное c[a]$time с использованием переменной d  или e
можно попробовать как сделано в примере:
test <- split(mtcars, mtcars$cyl) #создаем пример
set_vrbl <- 4
test[[deparse(set_vrbl)]] == test$`4`
источник

R

R in R (язык программирования)
Слушайте, а у меня вопрос, возможно, запретный, но что-то у меня не получается его загуглить. Есть ли в питоне (или мб в пандас конкретно) аналог точки из магриттра для метод чейнинга (типа object.method().method().method())?
источник

PU

Philipp Upravitelev in R (язык программирования)
R
Слушайте, а у меня вопрос, возможно, запретный, но что-то у меня не получается его загуглить. Есть ли в питоне (или мб в пандас конкретно) аналог точки из магриттра для метод чейнинга (типа object.method().method().method())?
ну так это и есть пандасовский чейнинг, не?
df.groupby('var1')['var2'].mean().reset_index().rename(columns={'var2':'var2_mn'})
источник

R

R in R (язык программирования)
Philipp Upravitelev
ну так это и есть пандасовский чейнинг, не?
df.groupby('var1')['var2'].mean().reset_index().rename(columns={'var2':'var2_mn'})
Не-не, я понимаю, я про то, что в магриттре можно точкой возвращать результат из предыдущего этапа пайпа, хочу понять, есть ли такое в питоне/пандасе
источник