You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ggplot面板图中对数据取子集?找不到“.”函数报错怎么解决

报错原因

你遇到的could not find function "."报错,是因为代码中使用的.( )是plyr包提供的专用语法,没有预先加载plyr包时就会触发该报错。此外当前新版ggplot2已经不推荐在geom几何层直接使用subset参数,该参数属于旧版兼容语法,后续版本存在被移除的风险。

修复方案

方案1:快速适配原有代码

仅需在加载包的代码段新增plyr包的引用即可,修改后的加载包部分如下:

library(ggplot2)
library(reshape2)
library(plyr) # 新增这一行即可运行原有后续代码

方案2:推荐写法(适配新版ggplot2,无额外依赖)

使用data参数配合base自带的subset函数完成数据筛选,无需额外加载plyr包。同时你的代码可以大幅简化:你已经将数据转换为长表且配置了facet_grid按variable分面,不需要逐变量添加geom_col层,直接添加一层geom_col即可自动将对应变量的数据匹配到对应面板。
修改后的完整代码如下:

# 加载数据
# 数据来源: data analysis-gullies > R Stats Input > Panel Chart
df <- read.csv(file.choose(), header = T)
View(df)

# 加载依赖包
library(ggplot2)
library(reshape2)

# 转换为长表
dfm <- melt(df, id.vars =c("Interval"))
View(dfm)

# 绘制分面图
ggplot(dfm, aes(Interval, value, colour = "grey20")) + 
  geom_col(fill = "grey20") + # 仅需一层geom_col即可,分面自动匹配数据
  scale_colour_identity() +
  xlim(5,1115)+ 
  facet_grid(variable ~ ., scales = "free", as.table = FALSE) +
  theme_bw() + 
  theme(panel.spacing = unit(0, "lines"), 
        axis.title.x = element_blank(),
        axis.title.y = element_text())

如果你确实需要为不同变量配置不同的几何层样式,才需要逐层指定数据筛选,写法参考如下:

# 单层级指定筛选数据示例
test + geom_col(data = subset(dfm, variable == "Count"), fill = "red")

内容的提问来源于stack exchange,提问作者mpearson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:21:02