2015-11-22 3 views
0

Я пытаюсь изменить окончательную функцию correcttot из цикла for для применения, но у вас возникли проблемы при попытке получить функцию apply, чтобы взять базовые значения в , массив, к которому я буду применять его.Использование применяется, чтобы найти оптимальный из 7 констант?

correcttot<-function(v,p,r){ 
     df<-expand.grid(i=1:10,j=1:10,k=1:10,l=1:10,m=2:10,n=2:10,o=1:10)) 
     df$correct3<-0 
     df$correct3<- apply(df, 1:7, function(x) 
      percentcorrect((x$i)/10,(x$j)/10,(x$k)*20,(x$l)*20,x$m,x$n,x$o,v,p,r) 
     ) 
     df$correct3 
     } 
     newvec2<-correcttot(v,p,r) 

ответ

2

Второй аргумент apply не номера столбцов, это число размерности. Ваш фрейм данных имеет только два размера: строки (1) и столбцы (2).

Для вашего анализа установите второй аргумент в 1, указав, что вы применяете функцию к каждой строке.

+0

Спасибо! и это правда, хотя это dim7? – user3678028

+0

Кадры данных имеют два измерения по определению. Вы можете представить измерения как количество координат, необходимых для определения значения. Для вектора вам нужно только одно значение (например, третье значение). Для фрейма данных вам нужны строки и столбцы (например, столбец 3, строка 7). Для 3-мерного массива вам нужны координаты всех трех измерений (например, строка 3, столбец 2, глубина 4). Для более высоких измерений вам нужны еще больше координат. Я почти уверен, что ваш объект df имеет только два измерения - строки и столбцы. –

Смежные вопросы