Наружный возврат нескольких ошибок? - PullRequest
0 голосов
/ 23 октября 2018

Хорошо, у меня есть датафрейм с некоторым количеством строк и 44 столбцами.

Я пытаюсь создать тепловую карту, чтобы создать матрицу размером 5 x 44.

x = seq(1,5,1)
y = seq(1,44,1)
f = function(x, y) { r = mean(r01[r01$weekday == x,y]); r}
z = outer(x, y, f)

Вот как я пытался это сделать, но я получаюпара ошибок:

Error in dim(robj) <- c(dX, dY) : 
  dims [product 220] do not match the length of object [1]
In addition: Warning messages:
1: In r01$weekday == p :
  longer object length is not a multiple of shorter object length
2: In mean.default(r01[r01$weekday == p, q]) :
  argument is not numeric or logical: returning NA

Поэтому, пытаясь устранить эти ошибки, я попытался сделать следующее:

x = seq(1,5,1)
y = seq(1,44,1)
f = function(x,y){ r = x+y; r+1 }
z = outer(x, y, f)

Что работает.Теперь это, которое удваивается как мой воспроизводимый пример :

hugs<-data.frame(replicate(44,sample(1:5,1000,rep=TRUE)))
x = seq(1,5,1)
y = seq(1,44,1)
f = function(x, y) { r = mean(hugs[hugs$x1 == x,y]); r}
z = outer(x, y, f)

Сбой, в основном с теми же ошибками:

Error in dim(robj) <- c(dX, dY) : 
  dims [product 220] do not match the length of object [1]
In addition: Warning message:
In mean.default(hugs[hugs$X1 == x, y]) :
  argument is not numeric or logical: returning NA

И это сильно смущает меня, потому чтоЯ предполагал, что это сработает, если выше.Так что я понятия не имею, как согласовать то, что работает, с тем, что работает, с тем, что не работает.

Ошибка, отсутствующая в версии "hugs", которую я воспроизвел, изменив hugs с помощью следующего перед запускомrest:

hugs$X1[hugs$X1 == 1,] <- 3

Но на самом деле я не знаю, как исправить эту ошибку, поскольку мой исходный кадр данных имеет значения от 1: 5 в будний день и 44 столбца, как в моем примере, так что я просто должен бытьнеправильное понимание его источника.Это не значит, что средства не существуют:

for (i in x){
  for (j in y){
    print(mean(r01[r01$weekday == i,j]))}}

Возвращает значения для каждого из них.Я думаю, что я мог бы реконструировать свою верхнюю логику, чтобы просто использовать эти два цикла, но я хочу использовать внешний, поскольку он более эффективен (?).

1 Ответ

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

Благодаря комментариям я решил не использовать внешний и вместо этого использовал этот одинаково быстрый и простой вкладыш:

aggregate(r01[1:44], r01["weekday"], mean)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...