Хорошо, у меня есть датафрейм с некоторым количеством строк и 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]))}}
Возвращает значения для каждого из них.Я думаю, что я мог бы реконструировать свою верхнюю логику, чтобы просто использовать эти два цикла, но я хочу использовать внешний, поскольку он более эффективен (?).