Я пишу цикл for, который преобразует выходные данные summary()
для набора векторов в матрицу, такую как foo
, ниже:
introA introB introC helpA helpB helpC
Min. 1 1 4 4 2 4
1st Qu. 5 5 5 5 4 5
Median 5 5 5 5 4 5
Mean 4.83 4.71 4.96 4.89 4.02 4.77
3rd Qu. 5 5 5 5 5 5
Max. 5 5 5 5 5 5
NA's 2 5 0 3 0 2
Обратите внимание, что introC
и helpB
имеют нули в строке NA
, и это summary()
НЕ производит это по умолчанию - если вы вызываете summary()
для вектора без значений NA
, результатом будет объект с длиной 6 вместо 7.
Мой цикл for
инициализирует пустую матрицу x
, присваивает результат summary
для каждого числового вектора в кадре данных x
и привязывает каждый x
к большему объекту y
.Это работает на всех фреймах данных, где у каждого вектора нет пропущенных значений или у всех есть.
Когда у некоторых векторов есть пропущенные значения, а у других нет, я написал этот обходной путь:
x <- matrix(NA,nrow=7,ncol=1)
y <- NULL
for(i in 1:ncol(foo)){
if(length(summary(foo[,i]==6))){
x <- as.matrix(c(summary(foo[,i]), 0))
rownames(x) <- c("Min.", "1st Qu.", "Median", "Mean", "3rd Qu.", "Max.", "NA's")
}else if(length(summary(foo[,i]==7))){
x <- as.matrix(summary(foo[,i]))
rownames(x) <- c("Min.", "1st Qu.", "Median", "Mean", "3rd Qu.", "Max.", "NA's")
}
y <- cbind(y,x)
x <- matrix(NA,nrow=7,ncol=1)
}
Здесь я проверяю, является ли summary()
вектора длины 6 или 7, и я добавляю строку, когда это не раньше, связывая результаты вместе.Вне моей петли это работает.По какой-то причине я получаю следующую ошибку при попытке запустить это в цикле:
Error in dimnames(x) <- dn :
length of 'dimnames' [1] not equal to array extent
Есть идеи о том, как моя длина не может быть равна экстенту массива?Я проверил длину summary()
для всех векторов в foo
;все имеют длину 6 или 7.