Size: a a a

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

2021 May 28

AS

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

AS

Alexey Seleznev in R (язык программирования)
если в CRAN то конечно не так просто, надо ещё и оформить пакет, и код должен соответствовать политике CRAN и т.д.


у меня давно зреет идея либо серию статей написать, либо видео уроков о создании пакетов, может созрею
источник

h

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

IS

Ilya Shutov in R (язык программирования)
нынче делают чуть по другому.
https://usethis.r-lib.org/
источник

IS

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

IS

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

AS

Alexey Seleznev in R (язык программирования)
да, я об это пакете знаю, даже вроде частично его использовал, но надо будет нормально маны почитать
источник

MV

Marina Varfolomeeva ... in R (язык программирования)
У меня вопрос про subset.
Как бы создать список из нескольких сабсетов из объекта phyloseq?
Функция для сабсетов для таких объектов основана на обычном subset() для датафреймов (код в самом низу). Я бы хотела применить эту функцию к списку выражений (который у меня формируется автоматически из названия фактора и нужных его уровней), но что-то идет не так...
Какой может быть самый простой обходной путь? Написать на основе их функции свою multisubset_samples(), которая возвращает список сабсетов?

# Обычный subset для data.frame работает
dfr <- data.frame(group = c("A", "A", "B", "A", "B"), value = 1:5)
conditions <- list(expression(group == "A" & value < 3),
                  expression(group == "A"),
                  expression(group == "B"))
lapply(conditions, function(x) subset(dfr, eval(x)))

# Создаем объект phyloseq
# if (!requireNamespace("BiocManager", quietly = TRUE))
#   install.packages("BiocManager")
# BiocManager::install("phyloseq")
library("phyloseq")
OTU <- otu_table(matrix(1:20, ncol = 4), taxa_are_rows = TRUE)
samples <- sample_data(dfr)
mb <- phyloseq(OTU, samples)

# С одним условием все работает
subset_samples(mb, group == "A")
# Со списком условий - нет
lapply(conditions, function(x) subset_samples(mb, eval(x)))
# Error in eval(x) : object 'value' not found

# Исходный код `subset_samples`
# function (physeq, ...)
# {
#   if (is.null(sample_data(physeq))) {
#     cat("Nothing subset. No sample_data in physeq.\n")
#     return(physeq)
#   }
#   else {
#     oldDF <- as(sample_data(physeq), "data.frame")
#     newDF <- subset(oldDF, ...)
#     if (class(physeq) == "sample_data") {
#       return(sample_data(newDF))
#     }
#     else {
#       sample_data(physeq) <- sample_data(newDF)
#       return(physeq)
#     }
#   }
# }

UPD:
Пока написала корявую функцию для сплита по фактору.
library("onehot")
multisubset_samples <- function (physeq, fact)
{
 if (is.null(sample_data(physeq))) {
   cat("Nothing subset. No sample_data in physeq.\n")
   return(physeq)
 }
 else {
   groups <- levels(fact)
   dfr <- data.frame(fact)
   fltr <- predict(onehot(dfr), dfr)
   colnames(fltr) <- (gsub("fact=", "", colnames(fltr)))
   fltr <- as.list(data.frame(fltr>0))
   oldDF <- as(sample_data(physeq), "data.frame")
   newDF_list <- lapply(fltr, function(x) subset(oldDF, eval(x)))
   
   if (class(physeq) == "sample_data") {
     res <- lapply(newDF_list, sample_data)
     return(res)
   }
   else {
     n <- length(fltr)
     res <- vector(mode = "list", length = n)
     for(i in 1:n) {
       res[[i]] <- physeq
       sample_data(res[[i]]) <- sample_data(newDF_list[[i]])
     }
     return(res)
   }
 }
}
источник

PU

Philipp Upravitelev in R (язык программирования)
ох, сколько ж он за собой тянет-то...
источник

MV

Marina Varfolomeeva ... in R (язык программирования)
Да, есть такой момент(
источник

ГД

Григорий Демин... in R (язык программирования)
А может лучше формировать не выражения, а сразу уже вектор с TRUE, FALSE? Тогда потом уже просто выбирать подвыборки самыми стандартными средствами
источник

ГД

Григорий Демин... in R (язык программирования)
То есть будет примерно тоже самое, но без слова expression:

conditions <- list(group == "A" & value < 3, ...)
источник

PU

Philipp Upravitelev in R (язык программирования)
там s4 класс, а не стандартный датафрейм. пакетная функция сабсета его внутри преобразует и сплитит, но прямым путем оно не очень решается
источник

PU

Philipp Upravitelev in R (язык программирования)
я бегло посмотрел. интересная задача, постараюсь вечером поковырять подробнее
источник

MV

Marina Varfolomeeva ... in R (язык программирования)
Это я понимаю. В этом и затык...
источник

MV

Marina Varfolomeeva ... in R (язык программирования)
Спасибо!
источник

М

Марк in R (язык программирования)
Привет) Товарищи, мне кажется или pandas потребляет огромное количество памяти, по сравнению с R и постоянно крашится без особых на то причин?
источник

PD

Pavel Demin in R (язык программирования)
Ура, пятница!
источник

𝖀

𝖀𝕾𝕰𝕽 𝕹𝕬𝕸𝕰... in R (язык программирования)
Pandas вышел из чата
источник

МA

Михаил Ad.fesha... in R (язык программирования)
Личного большого опыта не имею, но не однократно на том же слаке видел сравнение R vs питон. Один из недостатков - это пандас (data table на пол корпуса его обходит).
источник