楼主: yijiaobani
1943 3

[问答] R语言中的 应用函数时调用向量名称 失败 [推广有奖]

  • 4关注
  • 5粉丝

已卖:70份资源

博士生

26%

还不是VIP/贵宾

-

威望
0
论坛币
196 个
通用积分
10.7311
学术水平
2 点
热心指数
8 点
信用等级
0 点
经验
5127 点
帖子
147
精华
0
在线时间
236 小时
注册时间
2015-5-18
最后登录
2020-10-28

楼主
yijiaobani 发表于 2015-10-22 18:03:03 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
有一个软件asreml的R包:
asreml(protein~snp10001, random=~ped(ID),data=SNPs,ginverse=list(ID=ainv))
这样可以出结果
ASReml: Thu Oct 22 17:52:33 2015

     LogLik         S2      DF      wall     cpu
  -1648.7841500142039.1348   156  17:52:33     0.0
  -1648.5315487038930.9418   156  17:52:33     0.0
因为我有好几百个snp,从snp00001-snp10001,每一个都要跑一边,我想写个循环,却发现无法进行,比如:

我把a <- snp10001 #把a赋值
然后运行程序:
asreml(protein~a, random=~ped(ID),data=SNPs,ginverse=list(ID=ainv))
报错:
Error in asreml.mf.default(formula = protein ~ a + ID, data = list(ID = 1:157,  :
  变数的长度不一样('a')


在R中怎么调用,这个功能在perl中可以实现,在R中怎么调用a呢?
ps,我把文件里面的snp名称换成1234,也不能调用,这不是引号的问题。
请大神指导!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言 Protein inverse random REML 软件

回帖推荐

ntsean 发表于3楼  查看完整内容

<img src="stati ...

沙发
万人往LVR 在职认证  发表于 2015-10-22 22:25:56
formula中的名称是在后面data=SNPs取的,SNPs中没有名字是a的这一列,故为空。需要在SNPs中加入一列名字是a的数据。

藤椅
ntsean 发表于 2015-10-23 04:55:19
  1. formula <- sprintf("protein~%s", "snp10001")
  2. formula <- as.formula(formula)
  3. asreml(formula, random=~ped(ID),data=SNPs,ginverse=list(ID=ainv))
复制代码

板凳
yijiaobani 发表于 2015-10-23 11:03:47
ntsean 发表于 2015-10-23 04:55
十分感谢,我以为只有用perl语言处理了,学会了R处理的方法,十分感谢。
分享我后来的循环程序:
a <- paste(c("snp1000"),1:17,sep = "")
n <- 1
b[[1]] <- NULL #结果是二维的,需要用NULL定义初始值,不能是0
for(ee in a){ #写一个循环
formula<- sprintf("y~%s", ee) #定义formula的字符串
formula <- as.formula(formula) # 把字符串定义为函数的形式,去掉引号
xxx<-asreml(formula, random=~ped(ID),data=SNPs,ginverse=list(ID=ainv))#写入循环成功
en <- wald(xxx)[2,][,1:4] #提取必要的数据
b[[n]] <- en
n <- n+1
}
b #显示数据

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 04:29