Как в 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
Да, я просто пытаюсь научиться правильно использовать приложения и прочее.
for
создает довольно необычный список. Возможно, вы хотите объяснить, что вы на самом деле пытаетесь сделать? - person Andrie   schedule 16.11.2011