柯暗 2023-02-09 15:48 采纳率: 100%
浏览 108
已结题

R4.2.0使用tableby函数出问题

问题现象:
使用R对xpt文件进行分析时,使用tableby()函数,出现“找不到对象'RIDAGEYR'”错误。其中,RIDAGEYR为从xpt文件读取到list的某一列名称。

环境:
R:4.2.0
加载包:haven、plyr、dplyr、arsenal (下载的是4.2.2的版本)

过程:

###加载包导入
library(haven)
library(plyr)
library(dplyr)
library(arsenal)
###读取文件
demo.g = read_xpt("C:/Users/Desktop/demo_g.xpt")
###列向量名称
colnames(demo.g)
###调用tableby
tabl = tableby(- RIDAGEYR + RIAGENDR + DMDEDUC2 + INDFMPIR ,data = demo.g)
###出错:Error in as_list_formula(formula) : 找不到对象'RIDAGEYR'

尝试的方法:
###将所使用的列名称标签进行查询,确保在list存在
which(names(demo.g) == RIDAGEYR )
返回了相对应的列数
###网上搜索“尝试使用~操作符”
没有报错

> tabl = tableby( ~ RIDAGEYR + RIAGENDR + DMDEDUC2 + INDFMPIR ,data = demo.g)
> summary(tabl, text=TRUE)

提问:
经过自己网上搜索,借由操作符得到了一定程度的效果,但不明白问题是出在什么原理?
同样可能目前的尝试对操作符并没有进行相应的分析操作,如果是这样,是该如何进行修改?

img

  • 写回答

3条回答 默认 最新

  • Bioinfo Guy R语言领域新星创作者 2023-02-09 16:57
    关注

    没有看明白你的意思,,但tableby(- RIDAGEYR + RIAGENDR + DMDEDUC2 + INDFMPIR ,data = demo.g)就肯定是错的:
    1.用~不用-可以简单理解为写这个R包的人规定就是这样的,此外像生存分析等建模的时候也一样。
    2.其实你这一句函数也不规范的,这是官方示例,且针对于formula操作符规范的也有官方的详细信息:

    data(mockstudy)
    tab1 <- tableby(arm ~ sex + age, data=mockstudy)
    summary(tab1, text=TRUE)
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月18日
  • 已采纳回答 2月10日
  • 修改了问题 2月9日
  • 创建了问题 2月9日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程