【问题标题】:Error: $ operator is invalid for atomic vectors using ggplot2错误:$ 运算符对于使用 ggplot2 的原子向量无效
【发布时间】:2020-05-22 16:27:00
【问题描述】:

我正在使用 R 中的 nlme 包运行线性混合模型分析。
当我尝试使用 ggplot 从我的模型中绘制结果时出现上述错误。我查看了 stackoverflow 上的其他帖子,但似乎看不到这里的错误。请有人帮忙看看下面的示例数据吗?

我的代码如下:

m1<-lme(vis_hits~Group*session+nbacklevel, random=~session|subjno,
              data = sampledata,method="ML",na.action=na.omit)
    summary(m1)

m1_plot<ggplot(sampledata,aes(session,vis_hits,colour=Group))+
           stat_summary(fun.data=mean_se,geom="pointrange")+
           stat_summary(aes(y=fitted(m1),linetype=Group),fun.y=mean,geom="line",size=1.5)+
           labs(y="Correctly detected nbacks")

下面是我的数据样本

Subjno  Group   session nbacklevel  vis_hits
1   1   1   1   0.83
1   1   1   2   0.5
1   1   1   3   0.33
1   1   1   3   
1   1   2   1   0.67
1   1   2   2   0.5
1   1   2   3   0.17
1   1   2   2   0.17
1   1   2   2   0.5
1   1   2   2   0.33
1   1   2   2   0.33
1   1   2   2   0.5
1   1   2   2   0.33
1   1   2   2   
1   1   2   1   0.67
1   1   2   2   0.67
1   1   2   3   0.33
1   1   2   3   0.33
1   1   2   3   0.17
1   1   3   1   0.67
1   1   3   2   0.5
1   1   3   2   0.5
1   1   3   2   0.33
1   1   3   2   0.33
1   1   3   2   0.5
1   1   3   2   0.33
1   1   3   2   0.33
1   1   3   2   0.17
1   1   3   2   0.33
1   1   3   2   0.33
1   1   3   2   0.67
1   1   3   3   0.17
1   1   3   3   0.17
1   1   3   3   0.17
1   1   3   3   0.17
1   1   4   1   1
1   1   4   2   1
1   1   4   3   0.5
1   1   4   2   1
1   1   4   3   0.67
1   1   4   3   0.5
1   1   4   2   1
1   1   4   3   0.67
1   1   4   4   0.67
1   1   4   3   0.67
1   1   4   2   0.83
1   1   4   3   1
1   1   4   4   0.67
1   1   5   2   0.83
1   1   5   3   0.33
1   1   5   3   0.33
1   1   6   2   0.83
1   1   6   3   0.5
1   1   6   3   0.67
1   1   6   3   0.17
2   0   1   1   1
2   0   1   2   1
2   0   1   2   1
2   0   2   1   1
2   0   2   2   1
2   0   2   3   0.83
2   0   2   2   1
2   0   2   3   0.83
2   0   2   2   1
2   0   2   2   0.83
2   0   2   2   1
2   0   2   2   1
2   0   2   3   0.83
2   0   2   2   1
2   0   2   3   0.5
2   0   2   2   1
2   0   3   1   1
2   0   3   2   1
2   0   3   3   0.83
2   0   3   2   1
2   0   3   2   1
2   0   3   2   1
2   0   3   2   1
2   0   3   3   0.33
2   0   3   2   0.67
2   0   3   2   1
2   0   3   2   0.83
2   0   3   2   1
2   0   3   3   0.83
2   0   3   2   1
2   0   4   1   1
2   0   4   2   1
2   0   4   3   0.33
2   0   4   2   1
2   0   4   3   0.67
2   0   4   2   1
2   0   4   3   0.67
2   0   4   2   0.5
2   0   4   1   0.83
2   0   4   1   0.83
2   0   4   1   0.83
2   0   4   2   1
2   0   4   3   0.33
2   0   4   2   0.83
2   0   5   2   0.5
2   0   5   1   1
2   0   5   2   0.83
2   0   5   2   0.83
2   0   6   2   1
2   0   6   3   0.67
2   0   6   2   1
2   0   6   3   0.83
2   0   6   3   0.83
3   1   1   1   0.67
3   1   1   2   0.67
3   1   1   3   0.33
3   1   1   3   0.33
3   1   2   1   0.67
3   1   2   2   0.33
3   1   2   1   0.83
3   1   2   2   1
3   1   2   3   0.33
3   1   2   2   0.67
3   1   2   2   0.67
3   1   2   3   
3   1   2   2   0.5
3   1   2   2   0.5
3   1   2   2   0.67
3   1   2   2   0.67
3   1   2   2   1
3   1   2   3   0.5
3   1   2   2   0.83
3   1   3   1   0.83
3   1   3   2   0.67
3   1   3   2   0.67
3   1   3   3   0.17
3   1   3   2   1
3   1   3   3   0.5
3   1   3   3   0.67
3   1   3   3   0.5
3   1   3   2   0.83
3   1   3   3   0.33
3   1   3   2   1
3   1   3   3   0.67
3   1   3   3   0.67
3   1   3   3   0.5
3   1   3   3   0.33
3   1   4   1   0.83
3   1   4   2   0.67
3   1   4   3   0.5
3   1   4   2   1
3   1   4   3   0.33
3   1   4   3   0.67
3   1   4   3   0.83
3   1   4   4   0.33
3   1   4   3   0.33
3   1   4   2   0.5
3   1   4   2   1
3   1   4   3   0.33
3   1   4   3   0.17
3   1   4   2   1
3   1   4   3   0.33
3   1   5   2   1
3   1   5   3   0.67
3   1   5   3   0.33
3   1   6   2   0.17
3   1   6   1   1
3   1   6   2   0.83
3   1   6   3   0.83
3   1   6   4   0.17
3   1   6   4   0.5
4   0   1   1   1
4   0   1   2   0.5
4   0   1   2   0.5
4   0   2   1   1
4   0   2   2   0.5
4   0   2   2   0.5
4   0   2   2   1
4   0   2   3   0.5
4   0   2   3   0.67
4   0   2   3   0.33
4   0   2   3   0.33
4   0   2   3   0.5
4   0   2   3   0.17
4   0   2   3   0.67
4   0   2   3   0.33
4   0   2   3   0.67
4   0   3   1   1
4   0   3   2   1
4   0   3   3   0.5
4   0   3   3   0.5
4   0   3   2   0.67
4   0   3   2   0.67
4   0   3   2   0.67
4   0   3   2   0.67
4   0   3   2   0.67
4   0   3   2   0.33
4   0   3   2   0.5
4   0   3   2   0.17
4   0   3   3   0.33
4   0   4   1   1
4   0   4   2   0.67
4   0   4   2   0.67
4   0   4   3   0.33
4   0   4   3   0.5
4   0   4   2   0.5
4   0   4   2   0.5
4   0   4   2   0.83
4   0   4   3   0.17
4   0   4   2   0.5
4   0   4   2   0.33
4   0   4   1   1
4   0   4   2   0.5
4   0   4   2   1
4   0   5   1   1
4   0   5   2   1
4   0   5   3   0.33
4   0   5   2   0.5
4   0   6   2   0.5
4   0   6   2   0.5
4   0   6   2   0.5
4   0   6   3   
6   0   1   1   1
6   0   1   2   1
6   0   1   3   0.67
6   0   1   2   0.83
6   0   2   1   1
6   0   2   2   1
6   0   2   3   0.17
6   0   2   2   1
6   0   2   3   0.67
6   0   2   3   0.83
6   0   2   3   0.67
6   0   2   2   1
6   0   2   3   1
6   0   2   4   0.5
6   0   3   1   1
6   0   3   2   1
6   0   3   3   0.5
6   0   3   2   1
6   0   3   3   0.67
6   0   3   3   0.5
6   0   3   2   1
6   0   3   3   0.67
6   0   3   4   0.67
6   0   3   3   0.67
6   0   3   2   0.83
6   0   3   3   1
6   0   3   4   0.67
6   0   4   2   1
6   0   4   3   0.67
6   0   4   3   0.67
6   0   4   3   1
6   0   4   4   0.33
6   0   4   3   0.67
6   0   4   3   0.83
6   0   4   2   1
6   0   4   3   1
6   0   4   4   0.67
6   0   4   3   1
6   0   4   4   0.5
6   0   4   3   0.67
6   0   5   2   1
6   0   5   3   1
6   0   5   4   0.5
6   0   6   2   0.83
6   0   6   3   1
6   0   6   4   0.83
6   0   6   4   0.83

【问题讨论】:

  • 这个错误是由于函数fitted()被应用于“vis_hits”。我不确定你的意图。也许你想在这里“m1”?
  • 对不起,我修改了发布代码,忘记修改fitted()。
  • 感谢 Dave2e - 如果安装会出错(m1)
  • 第 5、14、120、217 行缺少数据...?
  • 在修复了一些东西之后(用 0.5 填充缺失的数据,subjno 的大写,使用factor(Group) 线型......)我得到了一个 ggplot2 版本 3.3.0 的图。 sessionInfo()好吗?

标签: r ggplot2 nlme


【解决方案1】:

这里有几个问题。

第一个更正是将“组”列从数字列转换为因子,以指定线型。最好使用函数dput() 发布您的示例数据,而不是发布表格。 dput 将保留原始数据类型。

接下来,原始数据有四行缺失数据,我假设这些值为 NA,并在尝试绘制数据之前将它们从数据集中删除。这是确保拟合参数的数量等于数据行数所必需的。

m1<-lme(vis_hits~Group*session+nbacklevel, random=~session|Subjno,
        data = sampledata,method="ML",na.action=na.omit)
summary(m1)

#Remove incomplete rows of values
sampledata<-sampledata[complete.cases(sampledata),]

# Assuming "Group" is a factor and not numeric
m1_plot<-ggplot(sampledata, aes(session, vis_hits, colour=factor(Group)))+
  stat_summary(fun.data=mean_se, geom="pointrange")+
 stat_summary(aes(y=fitted(m1), linetype=factor(Group)), fun=mean, geom="line", size=1.5)+
  labs(y="Correctly detected nbacks")


m1_plot

这是我的结果图。

【讨论】:

  • 非常感谢 Dave2e。
  • @shrutigarg,欢迎您!请接受答案以结束问题。
猜你喜欢
  • 2015-10-02
  • 1970-01-01
  • 1970-01-01
  • 2020-06-21
  • 2021-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多