2015-09-09 1 views
0

Я практиковал пример применения в документации R.Как использовать функцию apply, чтобы не использовать столбцы имен?

x<-cbind(x1=3,x2=c(4:1, 2:5)) 
dimnames(x)[[1]]<-letters[1:8] 
apply(x,2,mean,trim = .2) 

Это результат.

x1 x2 
3 3 

Если я просто хочу, чтобы взять среднее значение х2, подобно

x2 
3 

так я стараюсь

apply(x,x[,2],mean) 

и это ошибка: Ошибка в случае (d2 == 0L) { : отсутствует значение, где требуется TRUE/FALSE

так как я мог это сделать или улучшить? Благодарю.

+0

Почему вы использовали 'apply' там? – A5C1D2H2I1M1N2O1R2T1

+0

Сначала я использовал функцию агрегата, а имена x1 x2 - NULL. (Список (х $ x1)) – Kevin

ответ

2

Я не уверен, почему вы хотели бы использовать apply. Вы можете просто сделать что-то вроде:

mean(x[, "x2"], trim = .2) 
# [1] 3 

Если вы действительно хотите использовать apply, вы можете попробовать что-то вроде:

apply(x[, "x2", drop = FALSE], 2, mean, trim = .2) 
# x2 
# 3 

## apply(x[, 2, drop = FALSE], 2, mean, trim = .2) 

Другими словами, выберите столбцы, которые вы заинтересованы в качестве набора данных , а затем примените любую функцию, которую вы хотите. Обратите внимание на использование drop = FALSE, чтобы предотвратить превращение одного столбца в основной вектор.