关于列表语法的另一个问题(我认为我正在慢慢学习)。我有以下简化形式的数据:
a=c(1,2,3,4,5,NA,NA)
b=c(6,7,8,9,10,NA,NA)
c=c(6,5,3,NA,NA,NA,NA)
d=c(NA,NA,NA,NA,NA,NA,NA)
A=data.frame(a,b,c,d)
B=data.frame(c,b,a,d)
C=data.frame(d,c,b,a)
mylist=list(A,B,C)
bins=c(0,2,4,6,8,10)
我想根据定义的箱对数据帧列表中的每一列进行分箱,然后为每个数据帧的每个箱返回一个平均数。我不介意输出是什么形式,一个数据框或一个向量列表。因此在这个例子中:
hist(a,bins, plot= FALSE)
hist(b,bins, plot= FALSE)
hist(c,bins, plot= FALSE)
数数
$counts
[1] 2 2 1 0 0
$counts
[1] 0 0 1 2 2
$counts
[1] 0 1 2 0 0
分别。
我不知道该怎么做,但鉴于 d 只包含 NA,我希望它返回:
$counts
[1] 0 0 0 0 0
(我想把每个 NA 变成 0)。
因此 A 的平均值(包含 a、b、c、d)将是:
$counts
[1] 2 2 1 0 0 +
$counts
[1] 0 0 1 2 2 +
$counts
[1] 0 1 2 0 0 +
$counts
[1] 0 0 0 0 0 +
= 2 3 4 2 2 / 4
= 0.5 0.75 1 0.5 0.5
这将是我想要的数据帧 A 的输出。最终的向量列表还将包括 B 和 C 的相关向量,尽管正如我所说,初始列表中每个数据帧的列数据帧也可以,因为最后一步将是我将这些平均数与 bin 的中点进行比较。
我希望我的解释足以让我对我正在尝试做的事情有所了解。