Суммируйте значения столбцов в одномерном списке в R - PullRequest
0 голосов
/ 21 октября 2018

У меня есть следующий список, который идет от 1 до 1000. Здесь у меня есть 29 столбцов, и в каждом списке у меня есть одна строка (одномерный список)

Вот мой пример r кода.

data = sample(c(0,1), replace=TRUE, size=29000)
va1 = c(seq(1, 29000, by = 28))
DF21 <- mapply(function(a, b) DF[a:b, ], va, c(va[-1], nrow(DF)),
              SIMPLIFY = FALSE)
DF21

enter image description here

Я использую do.call(rbind,lapply(DF2, colSums)) для вычисления суммы в столбце.Но я получаю сообщение об ошибке «Ошибка в FUN (X [[i]], ...):« x »должен быть массивом как минимум двух измерений»

Как суммировать столбцы в каждомсписок здесь?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 21 октября 2018

Отправленный вами фрагмент не создает список.Сбой в 3-м операторе, потому что 'va' не существует.

Следующий код поможет вам суммировать столбцы.Он показывает, как превратить вектор в матрицу, суммировать столбцы матрицы, превратить матрицу в список, вернуть его обратно и матрицу.

data = sample(c(0,1), replace=TRUE, size=29000) # reusing your first line
mat <- matrix(data,nrow=1000,ncol=29) # constructing a 1000* by 29 matrix
colsum <- apply(mat,2,sum) # This sums the columns
l <- split(mat, 1:1000) # produce a list that looks like what you posted
mat2<-matrix(unlist(l),nrow=1000,ncol=29) # turn the list back to a matrix
colsum2 <- apply(mat,2,sum) # sum the columns again :-)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...