R中的循环:使用索引将子集括起来

R中的循环:使用索引将子集括起来,r,for-loop,subset,R,For Loop,Subset,我试图在R中编写一个for循环,使用索引值来子集数据,但是我得到了错误,我的括号是意外的。当我从代码体中删除它们时,我得到一个错误,我正在创建的对象找不到(是的!不应该找到它…循环应该创建它)。我熟悉循环,但在R中编写循环的经验较少。说清楚一点,我不知道何时使用单括号[I]或双括号[I]]。我只是希望我的循环能够成功运行,并生成24次效果大小计算 我尝试了[I]、[I]]和[I]的多种组合。我还更改了指示器上的变量类型,但没有效果 谢谢你的帮助 我目前的代码如下: 数据集示例: structur

我试图在R中编写一个for循环,使用索引值来子集数据,但是我得到了错误,我的括号是意外的。当我从代码体中删除它们时,我得到一个错误,我正在创建的对象找不到(是的!不应该找到它…循环应该创建它)。我熟悉循环,但在R中编写循环的经验较少。说清楚一点,我不知道何时使用单括号[I]或双括号[I]]。我只是希望我的循环能够成功运行,并生成24次效果大小计算

我尝试了[I]、[I]]和[I]的多种组合。我还更改了指示器上的变量类型,但没有效果

谢谢你的帮助

我目前的代码如下:

数据集示例:

structure(list(Group = c(1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 
2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3), id = c("Person1", "Person1", 
"Person1", "Person1", "Person1", "Person1", "Person1", "Person1", 
"Person2", "Person2", "Person2", "Person2", "Person2", "Person2", 
"Person2", "Person2", "Person3", "Person3", "Person3", "Person3", 
"Person3", "Person3", "Person3", "Person3"), year = c(2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
), indicator = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 1L, 2L, 3L, 
4L, 5L, 6L, 7L, 8L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L), score = c(3.5, 
3.5, 2, 3, 3.5, 4, 3, 4, 2.25, 2.5, 1.75, 1.5, 2, 2.75, 2, 2.75, 
1.75, 2, 1.75, 2, 2, 2.5, 2, 2.5)), class = c("tbl_df", "tbl", 
"data.frame"), row.names = c(NA, -24L))
当前格式的代码:

library(effsize)

for(i in 1:8){
a.1.1.[i]<-cohen.d((df[df$Group==1 & df$indicator==[i],]$score), (df[df$Group==2 & df$indicator==[i],]$score),pooled=T, hedges.correction = T, na.rm=T)

a.1.2.[i]<-cohen.d((df[df$Group==2 & df$indicator==[i],]$score), (df[df$Group==3 & df$indicator==[i],]$score),pooled=T, hedges.correction = T, na.rm=T)

a.1.3.[i]<-cohen.d((df[df$Group==1 & df$indicator==[i],]$score), (df[df$Group==3 & df$indicator==[i],]$score),pooled=T, hedges.correction = T, na.rm=T)
}

库(effsize)
(我在1:8中){

a、 1.1.[i]将数据存储在列表中:

a.1.1 <- vector('list', 8)
a.1.2 <- vector('list', 8)
a.1.3 <- vector('list', 8)

for(i in 1:8) {
  a.1.1[[i]] <- cohen.d((df$score[df$Group==1 & df$indicator==i]), 
                        (df$score[df$Group==2 & df$indicator==i]),
                         pooled=T, hedges.correction = T, na.rm=T)
  
  a.1.2[[i]]<-cohen.d((df$score[df$Group==2 & df$indicator==i]), 
                     (df$score[df$Group==3 & df$indicator==i]),
                      pooled=T, hedges.correction = T, na.rm=T)
  
  a.1.3[[i]] <- cohen.d((df$score[df$Group==1 & df$indicator==i]), 
                      (df$score[df$Group==3 & df$indicator==i]),
                       pooled=T, hedges.correction = T, na.rm=T)
}

a.1.1谢谢!请分享何时使用单括号、双括号、无括号?这取决于您想做什么。如果您将数据存储在列表中(如本例中)您需要使用双括号。要在向量中存储数据,您可以使用单括号。提取数据也可以使用单括号。有关它们之间的详细区别,请参阅本文