В R как заменить следующий код с помощью таких функций, как apply
, lapply
, rapply
, do.call
и т. Д.?
u <- 10:12
slist <- list()
for (i in 1:length(u)) {
p <- combn(u, i)
for (j in 1:ncol(p)) {
s <- paste(p[,j], collapse=",")
slist[[s]] <- 0
}
}
Для этой части:
for (j in 1:ncol(p)) {
s <- paste(p[,j], collapse=",")
Я пробовал что-то вроде:
s <- apply(p, 2, function(x) paste(x, collapse=","))
Который работает. Но затем для этой slist[[s]] <- 0
части внутри того же цикла for, я не знаю, что делать.
Редактировать: Это то, что я пытаюсь сделать. Для вектора u
я создаю список всех подмножеств в этом векторе. Затем для каждого подмножества я присваиваю его s
, затем использую строку s
в качестве имени элемента в slist
. Странно, я знаю, но это домашнее задание. Для приведенного выше кода это будут первые 5 элементов slist:
> slist
$`10`
[1] 0
$`11`
[1] 0
$`12`
[1] 0
$`10,11`
[1] 0
$`10,12`
[1] 0
Да, я просто пытаюсь научиться правильно применять и делать вещи.