全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1901 3
2015-10-22
有一个软件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,也不能调用,这不是引号的问题。
请大神指导!
二维码

扫码加我 拉你入群

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

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

全部回复
2015-10-22 22:25:56
formula中的名称是在后面data=SNPs取的,SNPs中没有名字是a的这一列,故为空。需要在SNPs中加入一列名字是a的数据。
二维码

扫码加我 拉你入群

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

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

2015-10-23 04:55:19
复制代码
二维码

扫码加我 拉你入群

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

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

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 #显示数据
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群