我有一个大型数据框(flightFPN,下面的示例),其数据对应于不同的组。一个组中的对象具有不同的卷,我使用此函数绘制每个组中的对象数超过特定阈值卷:
subflight=subset(flightFPN,Volume>2)
subflightgrouped=data.frame(table(subflight$Cell.ID))
hist(subflightFPN$Volume, breaks=seq(0,11,.2), freq=TRUE, main="Foci
Volume >2, Flight", xlab="Volume")
使用平均函数,我还查看了给定此特定体积截止值的所有对象的平均焦点数。
m=mean(subflightgrouped,Freq)
我想做的是制作每组平均焦点数作为我使用的截止值的函数的图表(即当我在体积截止时,每组焦点的平均数量是多少? > 1或> 1.1等
我一直在尝试下面代码的大量变体无济于事。我想要的是音量截止值从0.5到10逐步增加到。我认为(#seq(.5,10,.1)的输入会更好但是根本不起作用。我在下面的内容是最接近我的#ve来一些有效的东西,只有当音量截止值为1时才输出结果,没有别的。非常感谢任何帮助!
for (i in 1,10)
{
largeFPNflight=subset(flightFPN, Volume > i)
largeFPNflightgrouped=data.frame(table(largeFPNflight$Cell.ID))
m=mean(largeFPNflightgrouped$Freq)
}
plot(i,m)
就样本数据帧flightFPN而言,Cell.ID类别指的是一个特定的组。因此,例如S101006F5是一系列8个对象(ID 0到7),每个对象都有一个独特的体积。另一组是S101006F4,它是9个对象(0到8)的一族。
File Volume Unit SO ID Cell.ID
S101006F 0.27 um^3 5 0 S101006F5
S101006F 0.09 um^3 5 1 S101006F5
S101006F 3.90 um^3 5 2 S101006F5
S101006F 0.16 um^3 5 3 S101006F5
S101006F 0.03 um^3 5 4 S101006F5
S101006F 0.06 um^3 5 5 S101006F5
S101006F 0.13 um^3 5 6 S101006F5
S101006F 0.21 um^3 5 7 S101006F5
S101006F 0.02 um^3 4 0 S101006F4
S101006F 0.44 um^3 4 1 S101006F4
S101006F 0.26 um^3 4 2 S101006F4
S101006F 0.06 um^3 4 3 S101006F4
S101006F 0.09 um^3 4 4 S101006F4
S101006F 0.02 um^3 4 5 S101006F4
S101006F 0.03 um^3 4 6 S101006F4
S101006F 0.22 um^3 4 7 S101006F4
S101006F 0.03 um^3 4 8 S101006F4
S101006F 0.03 um^3 3 0 S101006F3
S101006F 1.65 um^3 3 1 S101006F3
S101006F 0.14 um^3 3 2 S101006F3
S101006F 0.02 um^3 3 3 S101006F3
S101006F 0.01 um^3 2 0 S101006F2
S101006F 0.08 um^3 2 1 S101006F2
S101006F 0.75 um^3 2 2 S101006F2
S101006F 0.03 um^3 2 3 S101006F2
S101006F 0.05 um^3 2 4 S101006F2
S101006F 0.02 um^3 2 5 S101006F2
S101006F 0.23 um^3 2 6 S101006F2
S101006F 0.04 um^3 2 7 S101006F2
S101006F 0.03 um^3 2 8 S101006F2
S101006F 0.25 um^3 2 9 S101006F2
S101006F 0.02 um^3 2 10 S101006F2
S101006F 0.02 um^3 2 11 S101006F2
答案 0 :(得分:1)
您的问题是您需要存储以后访问的方法,因为您会一直覆盖它们。虽然非常直观(特别是当你有另一种语言的背景时),for循环并不是大多数时候都可以使用的方式。以下是使用lapply在base-R中的可能解决方案。
首先,我们启动一个阈值向量:
my_thresholds <- seq(0,10,0.5)
然后我们使用lapply为每个阈值执行自定义函数:
res <- lapply(my_thresholds, function(x){
#table by cell ID
temp_table <- with(dat[dat$Volume>x,],table(Cell.ID))
#return threshold used and mean of frequencies
return(c(threshold=x,mean_freq=mean(temp_table)))
})
这可以绑定到正确的绘图格式:
res <- do.call(rbind,res)