R中的循环:使用索引将子集括起来
我试图在R中编写一个for循环,使用索引值来子集数据,但是我得到了错误,我的括号是意外的。当我从代码体中删除它们时,我得到一个错误,我正在创建的对象找不到(是的!不应该找到它…循环应该创建它)。我熟悉循环,但在R中编写循环的经验较少。说清楚一点,我不知道何时使用单括号[I]或双括号[I]]。我只是希望我的循环能够成功运行,并生成24次效果大小计算 我尝试了[I]、[I]]和[I]的多种组合。我还更改了指示器上的变量类型,但没有效果 谢谢你的帮助 我目前的代码如下: 数据集示例:R中的循环:使用索引将子集括起来,r,for-loop,subset,R,For Loop,Subset,我试图在R中编写一个for循环,使用索引值来子集数据,但是我得到了错误,我的括号是意外的。当我从代码体中删除它们时,我得到一个错误,我正在创建的对象找不到(是的!不应该找到它…循环应该创建它)。我熟悉循环,但在R中编写循环的经验较少。说清楚一点,我不知道何时使用单括号[I]或双括号[I]]。我只是希望我的循环能够成功运行,并生成24次效果大小计算 我尝试了[I]、[I]]和[I]的多种组合。我还更改了指示器上的变量类型,但没有效果 谢谢你的帮助 我目前的代码如下: 数据集示例: structur
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谢谢!请分享何时使用单括号、双括号、无括号?这取决于您想做什么。如果您将数据存储在列表中(如本例中)您需要使用双括号。要在向量中存储数据,您可以使用单括号。提取数据也可以使用单括号。有关它们之间的详细区别,请参阅本文