Size: a a a

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

2020 December 04

MV

Marina Varfolomeeva ... in R (язык программирования)
У меня странный вопрос про передачу аргументов в функции.
Есть некоторая функция, которая принимает аргументы в таком виде:
func(Group_1 = c(1, 3, 5), Group_2 = c(2, 4, 6))
Существует ли способ автоматически сформировать и передать эти аргументы, если есть матрица X со всем необходимым? Названия строк этой матрицы должны стать названиями аргументов, а содержимое - вектором значений. Даже не знаю, что гуглить...

(X <- matrix(1:6, nrow = 2, dimnames = list(c("Group_1", "Group_2"), NULL)))
#         [,1] [,2] [,3]
# Group_1    1    3    5
# Group_2    2    4    6
источник

АК

Артём Клевцов... in R (язык программирования)
Попробуй так:
do.call(f, apply(X, 1, as.list))
источник

АК

Артём Клевцов... in R (язык программирования)
Для более точного ответа нужны код функции и структура желаемого результата.
источник

АК

Артём Клевцов... in R (язык программирования)
Новые пайпы со шрифтом Fira Code:
https://twitter.com/nanxstats/status/1334741663294611457
источник

MV

Marina Varfolomeeva ... in R (язык программирования)
Артём Клевцов
Попробуй так:
do.call(f, apply(X, 1, as.list))
Спасибо! do.call помогло
do.call(func, lapply(apply(X, 1, as.list), unlist))
источник

АК

Артём Клевцов... in R (язык программирования)
Думаю, тут можно подсократить.
источник

АК

Артём Клевцов... in R (язык программирования)
do.call береёт список и матчит его с аргументами функции.
источник

АК

Артём Клевцов... in R (язык программирования)
do.call(func, apply(X, 1, list))
Так ещё можно попробовать.
источник

MV

Marina Varfolomeeva ... in R (язык программирования)
Артём Клевцов
Думаю, тут можно подсократить.
Можно, но не сильно. Там у ... вполне определенный вид
X <- matrix(1:6, nrow = 2, dimnames = list(c("Group_1", "Group_2"), NULL))
# Желаемый результат
# $Group_1
# [1] 1 3 5
# $Group_2
# [1] 2 4 6

lapply(apply(X, 1, as.list), unlist)
as.list(data.frame(t(X)))
plyr::aaply(X, 1, list)
split(X, 1:nrow(X)) # теряет имена
источник

АК

Артём Клевцов... in R (язык программирования)
split(X, 1:nrow(X))

Не теряет, если сплиттить по именованной переменной или фактору.
источник

АК

Артём Клевцов... in R (язык программирования)
Marina Varfolomeeva 🐾
Можно, но не сильно. Там у ... вполне определенный вид
X <- matrix(1:6, nrow = 2, dimnames = list(c("Group_1", "Group_2"), NULL))
# Желаемый результат
# $Group_1
# [1] 1 3 5
# $Group_2
# [1] 2 4 6

lapply(apply(X, 1, as.list), unlist)
as.list(data.frame(t(X)))
plyr::aaply(X, 1, list)
split(X, 1:nrow(X)) # теряет имена
> unlist(apply(X, 1, list), rec = FALSE)
$Group_1
[1] 1 3 5

$Group_2
[1] 2 4 6
источник

MV

Marina Varfolomeeva ... in R (язык программирования)
Артём Клевцов
split(X, 1:nrow(X))

Не теряет, если сплиттить по именованной переменной или фактору.
Буду знать, но здесь это долго, т.к. X - это результат model.matrix()
источник

MV

Marina Varfolomeeva ... in R (язык программирования)
Артём Клевцов
> unlist(apply(X, 1, list), rec = FALSE)
$Group_1
[1] 1 3 5

$Group_2
[1] 2 4 6
Не знала про это. Попробовала split() по фактору, но unlist() быстрее.
library(microbenchmark)
mb <- microbenchmark(
lapply(apply(X, 1, as.list), unlist),
as.list(data.frame(t(X))),
plyr::aaply(X, 1, list),
unlist(apply(X, 1, list), rec = FALSE),
split(X, factor(rownames(X))),
split(X, factor(1:nrow(X)))
)
with(mb, tapply(time, expr, median))
 lapply(apply(X, 1, as.list), unlist)              as.list(data.frame(t(X)))
                              55071.0                               136612.0
              plyr::aaply(X, 1, list) unlist(apply(X, 1, list), rec = FALSE)
                            1795284.5                                40182.5
        split(X, factor(rownames(X)))            split(X, factor(1:nrow(X)))
                              79691.5                                51943.0
источник

БА

Байкулов Антон... in R (язык программирования)
Артём Клевцов
Да там гугл уже несколько раз схему авторизации менял, потом выкатил четвёртую версию API.
googleAnalyticsR вполне достойные люди пилили, так что я и подумал, что юзеры переползут и будут довольны.
Мы и перепозли)
источник

БА

Байкулов Антон... in R (язык программирования)
Переслано от Байкулов Антон...
Ребята, подскажите по shiny, пожалуйста. Я чёт туплю.
dataRange <- reactive({
       data %>% filter(between(date, input$date[1], input$date[2]))
   })

Не хочет фунциклировать.

data$date - тип Date.
input$date - тоже Date
источник

IR

Ignatius Reilly in R (язык программирования)
Прикольная вещь! Только у меня почему-то часть ligatures работает сразу в RStudio (например - > или - >>) , а часть - только если закомментить код (например |> или >=>). Не подскажите, с чем может быть связано? С тем что у меня R пока распознает только первые два как операторы?
источник

БА

Байкулов Антон... in R (язык программирования)
Байкулов Антон
Переслано от Байкулов Антон
Ребята, подскажите по shiny, пожалуйста. Я чёт туплю.
dataRange <- reactive({
       data %>% filter(between(date, input$date[1], input$date[2]))
   })

Не хочет фунциклировать.

data$date - тип Date.
input$date - тоже Date
Вопрос снимается. inputid не тот указал -_-
источник

Ю

Юрий 🐙💻🤖📊📈🚬... in R (язык программирования)
Друзья, а какие shiny приложения вам встречались в последнее время, про которое вы могли бы сказать: круто сделано, классный дизайн, или функционал, или идея и т.п. покидайте, плиз, линки
источник

EP

Ed P in R (язык программирования)
финалисты результатов shiny contest за оба года (2020 и 2019)
источник

EP

Ed P in R (язык программирования)
источник