R 如何循环列并根据相同的值对数据集进行子集

R 如何循环列并根据相同的值对数据集进行子集,r,loops,subset,data-management,R,Loops,Subset,Data Management,我试图循环遍历具有相同值的列和子集数据 见下文 White <- rep(0:1, 50) Latino <- rep(0:1, 50) Black <- rep(0:1, 50) Asian <- rep(0:1, 50) DV <- seq(1: length(rep(0:1, 50))) x <- data.frame(cbind(White, Latino, Black, Asian, DV)) race <- c("White", "Lat

我试图循环遍历具有相同值的列和子集数据

见下文

White <- rep(0:1, 50)
Latino <- rep(0:1, 50)
Black <- rep(0:1, 50)
Asian <- rep(0:1, 50)
DV <- seq(1: length(rep(0:1, 50)))
x <- data.frame(cbind(White, Latino, Black, Asian, DV))


race <- c("White", "Latino", "Black", "Asian")

for(j in race){
  for (i in race){

    df_1 <- subset(x, i == 1)
    df_2 <- subset(x, j == 1)
    print(paste(i, j, sep = " "))
    print(t.test(df_1$DV, df_2$DV) )


  }
}

White注意,代码中的
i
j
是一个字符串,但实际上您希望提取该列,如

for(比赛中的j){
(我参加了比赛){

df_1注意,代码中的
i
j
是一个字符串,但实际上您希望提取该列,如

for(比赛中的j){
(我参加了比赛){

df_1您可能需要添加
get

for(j in race){
     for (i in race){

         df_1 <- subset(x, get(i) == 1)
         df_2 <- subset(x, get(j) == 1)
         print(paste(i, j, sep = " "))
         print(t.test(df_1$DV, df_2$DV) )


     }
 }
for(比赛中的j){
(我参加了比赛){

df_1您可能需要添加
get

for(j in race){
     for (i in race){

         df_1 <- subset(x, get(i) == 1)
         df_2 <- subset(x, get(j) == 1)
         print(paste(i, j, sep = " "))
         print(t.test(df_1$DV, df_2$DV) )


     }
 }
for(比赛中的j){
(我参加了比赛){

df_1在
R
中,我们也可以使用
外部

f1 <- function(u, v) list(t.test(x$DV[x[[u]] ==1], x$DV[x[[v]] == 1]))
out <- outer(race, race, FUN = Vectorize(f1))
out[1,1]
#[[1]]

#   Welch Two Sample t-test

#data:  x$DV[x[[u]] == 1] and x$DV[x[[v]] == 1]
#t = 0, df = 98, p-value = 1
#alternative hypothesis: true difference in means is not equal to 0
#95 percent confidence interval:
# -11.57133  11.57133
#sample estimates:
#mean of x mean of y 
#       51        51 

R
中,我们也可以使用
outer

f1 <- function(u, v) list(t.test(x$DV[x[[u]] ==1], x$DV[x[[v]] == 1]))
out <- outer(race, race, FUN = Vectorize(f1))
out[1,1]
#[[1]]

#   Welch Two Sample t-test

#data:  x$DV[x[[u]] == 1] and x$DV[x[[v]] == 1]
#t = 0, df = 98, p-value = 1
#alternative hypothesis: true difference in means is not equal to 0
#95 percent confidence interval:
# -11.57133  11.57133
#sample estimates:
#mean of x mean of y 
#       51        51 

太棒了!非常感谢您的帮助。非常好!很高兴协助,享受编码!太棒了!非常感谢您的帮助。非常好!很高兴协助,享受编码!太棒了!非常感谢您的回答。这非常棒helpful@SharifAmlaniyw:-)快乐编码:-)太好了!非常感谢您的回答。这非常有趣helpful@SharifAmlani yw:-)快乐编码:-)