r - 外部返回多个错误?
问题描述
好的,所以我有一些行数和 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$X1[hugs$X1 == 1,] <- 3
但我实际上不知道如何解决该错误,因为我的原始数据框在工作日的值是 1:5,并且像我的示例一样有 44 列,所以我一定是误解了它的来源。并不是说手段不存在:
for (i in x){
for (j in y){
print(mean(r01[r01$weekday == i,j]))}}
返回每一个的值。我想我可以重构我的上层逻辑以仅使用这两个循环,但我想使用外部,因为它更有效(?)。
解决方案
感谢评论,我决定不使用外层,而是使用这个同样快速和简单的单行:
aggregate(r01[1:44], r01["weekday"], mean)
推荐阅读
- google-apps-script - 我的自我调用解决方法有效还是巧合?
- c++ - pointer_traits typedefs 可以未定义吗?
- c++ - unique_ptr 作为通用处置对象
- aggregate - 拆分不连贯的聚集体
- php - 是否可以使用 php 从 parseplaform 从 GeoPoint 获取纬度和经度
- php - 将网站页面从域重定向到子域
- c++ - GNU MPFR 在精度高于 64 时给我完全相同的结果
- performance - 是否有任何已建立的带有时间分析的 spark-sql 表达式的性能基准?
- mysql - 如何在客户端列中每个唯一值的描述中创建获取 3 个值
- firebase - Firebase Firestore - 在 React Native 中显示查询的数据