Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 循环中的方差分析检验_R_Loops - Fatal编程技术网

R 循环中的方差分析检验

R 循环中的方差分析检验,r,loops,R,Loops,我的桌子是这样的: id BiotinControl1_2 BiotinControl2 BiotinControl3 BiotinTreatment1_2 BiotinTreatment2 BiotinTreatment3 Sequence 1 75 3893050.50 2717893.32 3206861.1 3435216.40 3768203.0 3647604.45 AAAAGAAAVANQGKK 2 192

我的桌子是这样的:

    id BiotinControl1_2 BiotinControl2 BiotinControl3 BiotinTreatment1_2 BiotinTreatment2 BiotinTreatment3 Sequence
1   75       3893050.50     2717893.32      3206861.1         3435216.40        3768203.0 3647604.45 AAAAGAAAVANQGKK
2  192        900604.61      741299.33       937413.2          818936.89         937764.7 751303.46  AAAAGAAAVANQGKK
3 3770         90008.14       87127.07       107568.6           85120.95         101947.6 90152.82   AAFTKLDQVWGSE
我使用以下代码重新组织数据:

tbl_reo <- melt(tbl_anv, measure.vars=2:7)
我想做方差分析。我想在循环中一个id一个id地做。因此,首先我为id创建了一个表,其中包含所有6个值和变量列,该列说明该值属于哪个变量。我想对这两列进行方差分析计算

编辑:因此,对于每个id,我想计算lm(value~变量)。

aov.test <- summary(aov(tbl_reo$value ~ as.factor(tbl_reo$variable)))

tbl_reo[,5]  <- aov.test[[1]]$'Pr(>F)'[1]

aov.test很难理解你想做什么。因为你的问题还不清楚,所以这只是一个大概的答案

但我认为您正在寻找
by
plyr
包中的
ddply
,以进行分组治疗。例如,首先我创建一些可复制的数据。(请学习如何复制数据,这对于解决您的问题至关重要)

所以对于每个id,我想计算lm(value~变量)并比较id之间的方差分析

因此,使用
by
可以获得每个id的方差分析,如下所示:

by(tbl_reo,tbl_reo$id,function(x){
  anova(lm(value ~ variable, data = x))$"Pr(>F)"[1]
})

tbl_reo$id: 1
[1] 0.7430758
--------------------------------------------------------------------------------------------------------- 
tbl_reo$id: 2
[1] 0.122237
--------------------------------------------------------------------------------------------------------- 
tbl_reo$id: 3
[1] 0.8914668
--------------------------------------------------------------------------------------------------------- 
tbl_reo$id: 4
[1] 0.7790441
--------------------------------------------------------------------------------------------------------- 
tbl_reo$id: 5
[1] 0.6833726
--------------------------------------------------------------------------------------------------------- 
tbl_reo$id: 6
[1] 0.7323833

我不明白。什么也不说就放-1是正常的吗?我做错了什么?试图遵守规则,但正如你们看到的,我是新来的,这可能会引起一些问题……我没有投票。但我想这是因为不清楚你在问什么(我同意没有解释的否决是没有建设性的)。你说的是id循环?但是我在你的代码中没有看到任何循环?你能至少写一段你想做的伪代码吗。(对于每个id,…)编辑第一篇文章。你知道我如何在不按代码每行4倍空格的情况下输入大量代码吗?我恐怕还不清楚你想做什么。什么是不写伪代码的?是否要为每个id计算lm(值~变量)
?因为每个变量的
;lm(value~variable)
(你写的东西)没有太多意义。也许我在第一篇文章中解释了所有错误。我想做方差分析。我想在循环中一个id一个id地做。因此,首先我为id创建了一个表,其中包含所有6个值和变量列,该列说明该值属于哪个变量。我想对这两列进行方差分析计算。希望你现在明白我的意思。谢谢你的耐心。你能解释一下我是如何复制数据的吗?我不明白代码甚至结果都不清楚。别担心,问题在我这边。我会说,以我目前的知识水平,我试图做太难的事情。如果我现在想按顺序而不是按“id”来编辑代码,@juanhijun要按顺序来编辑代码,
by(tbl_reo,tbl_reo$sequence,function(x){anova(lm(value~variable,data=x))$“Pr(>F)”[1]}
,但我建议您先阅读
by
帮助…谢谢。作为一个初学者,那个帮助对我非常有用。你很有耐心,我很感激。你能帮我测试整个数据集,而不仅仅是一部分,并在单独的列中列出p值吗?
tbl_anv <- tbl_all_onlyK[,c("id", "BiotinControl1_2", "BiotinControl2", "BiotinControl3",    "BiotinTreatment1_2", "BiotinTreatment2", "BiotinTreatment3", "Sequence")]

tbl_reo <- melt(tbl_anv, measure.vars=2:7)

dat <- vector("integer", length = ncol(tbl_reo))
names(dat) <- colnames(tbl_reo)

for (var in variable) {
dat[var] <- anova(lm(value ~ tbl_reo[, var], data = tbl_reo))$"Pr(>F)"[1]
}
set.seed(1)
vars <- c("id", "BiotinControl1_2", "BiotinControl2", "BiotinControl3",   
         "BiotinTreatment1_2", "BiotinTreatment2", "BiotinTreatment3",
         "Sequence")
tbl_reo <- data.frame(value   = rnorm(100),
                      id = gl(6,100/6),
                      variable= sample(vars,100,rep=TRUE))
str(tbl_reo)
'data.frame':   100 obs. of  3 variables:
 $ value   : num  -0.626 0.184 -0.836 1.595 0.33 ...
 $ id      : Factor w/ 6 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ variable: Factor w/ 8 levels "BiotinControl1_2",..: 2 1 4 2 1 4 4 1 2 5 ...
by(tbl_reo,tbl_reo$id,function(x){
  anova(lm(value ~ variable, data = x))$"Pr(>F)"[1]
})

tbl_reo$id: 1
[1] 0.7430758
--------------------------------------------------------------------------------------------------------- 
tbl_reo$id: 2
[1] 0.122237
--------------------------------------------------------------------------------------------------------- 
tbl_reo$id: 3
[1] 0.8914668
--------------------------------------------------------------------------------------------------------- 
tbl_reo$id: 4
[1] 0.7790441
--------------------------------------------------------------------------------------------------------- 
tbl_reo$id: 5
[1] 0.6833726
--------------------------------------------------------------------------------------------------------- 
tbl_reo$id: 6
[1] 0.7323833