r - ¿ 如何创建一个动态 FOR 循环,该循环根据按因子级别分组的数据集打印条形图?
问题描述
我有一个数据框(locs.new),记录了带有放射性标记的鸟类每天飞行的距离。我正在尝试创建一个调用for循环的函数,该循环为第i个麻雀(由字符变量“anillo”标识)创建一个子集,然后使用 xAxis=位置编号(NoFrec)和yAxisDistance 行进(距离)。这是我尝试过的:
plotDist <- function (x) {
v<-levels(locs.new$anillo)
as.vector(v)
for (i in v) {
print(i)
da<-subset(locs.new,anillo==i)
dat<-subset(da, select = c(NoFrec, Distance))
plot(dat$NoFrec~ dat$Distance)
print(ggplot(dat, aes(x=NoFrec, y= Distance))) +geom_col() + ggtitle(as.character(i))
}
}
plotDist(locs.new)
如果我将代码从 for 循环中分离出来并单独创建每个数据集,它就可以正常工作:
i<-"XEN010"
da<-subset(locs.new,anillo==i)
dat<-subset(da, select = c(NoFrec, Distance))
plot(dat$NoFrec~ dat$Distance)
print(ggplot(dat, aes(x=NoFrec, y= Distance))) +geom_col() + ggtitle(as.character(i))
导致: 在此处输入图像描述, 但是当我在 for 循环中插入此代码时出现问题。它绘制图形......但没有条形并且没有标题。在此先感谢您的任何建议!
解决方案
由于右括号 ) 的位置,您的print
语句仅输出ggplot()
对象,即不包括thegeom_col
和ggtitle
结果。后两个语句产生你的条和你的标题。在函数之外,这无关紧要。在函数内部,它确实如此。
代替
print(ggplot(dat, aes(x=NoFrec, y=Distance))) + geom_col() + ggtitle(as.character(i))
经过
print(ggplot(dat, aes(x=NoFrec, y=Distance)) + geom_col() + ggtitle(as.character(i)))
然后再试一次?
注意如果问题包含一些样本数据,那将会很有帮助。
推荐阅读
- google-sheets - 根据工作表中的下拉菜单选择行的值
- android - 为什么我们的 ReactNative 应用在 Android 手机上使用时会变慢?
- google-apps-script - 如何使用 Javascript 仅删除工作表中最近 3 天的数据?
- makefile - CMake 错误:此项目中使用了以下变量,但它们设置为 NOTFOUND。X11_XTest_LIB(高级)
- excel - 如何在基于单元格值的子文件夹中创建子文件夹 用另一个值命名新文件夹
- javascript - 将标头发送到客户端后无法设置标头错误(Node/Express noob,其他解决方案似乎不起作用或不理解它们))
- android - Google Firestore 保存用户输入 Kotlin
- java - 添加自定义 beanpostprocessor 并尝试获取属于类的 bean 时,没有符合条件的 bean 类型异常
- delphi - 尝试释放带有对象的 StringList 时的复杂问题使我的应用程序崩溃
- excel - 使用电源查询合并excel中的表