R中的配对t检验给了我这个错误:没有足够的“x”观察值

R中的配对t检验给了我这个错误:没有足够的“x”观察值,r,statistics,R,Statistics,我尝试使用na.rm=True,但仍然是相同的错误。 我在3个集群上运行了下面的代码片段,但是我只能看到第一个集群的t测试结果。 A、 B是具有以下列的数据帧:ID、columna、columnb、cluster。我想对A列和B列进行配对t检验 for (i in 1:n){ print (paste ("cluster",i,sep="_")) A<-A[A$cluster==i,] print(t.test(A$columna,A$columnb,paired=

我尝试使用na.rm=True,但仍然是相同的错误。 我在3个集群上运行了下面的代码片段,但是我只能看到第一个集群的t测试结果。 A、 B是具有以下列的数据帧:ID、columna、columnb、cluster。我想对A列和B列进行配对t检验

for (i in 1:n){
    print (paste ("cluster",i,sep="_"))
    A<-A[A$cluster==i,]
    print(t.test(A$columna,A$columnb,paired=True,na.rm=T))
    B<-B[B$cluster==i,]
    print(t.test(B$columna,B$columnb,paired=True,na.rm=T))}
我只能得到I=1集群的结果,而对于I=2集群,我没有得到足够的x观测值,或者考虑通过迭代所有唯一集群,将子集数据帧传递到用户定义的通用方法。输出成为t检验结果的列表

proc_ttest <- function(df) t.test(df$columna, df$columnb, paired=True, na.rm=TRUE)

a_ttest_list <- by(A, A$cluster, proc_ttest)
b_ttest_list <- by(B, B$cluster, proc_ttest)

# RESULTS
a_ttest_list$`1`    # NAME INDEX
b_ttest_list$`1`

a_ttest_list[[2]]   # NUMBER INDEX
a_ttest_list[[2]]
...

循环中的第一个赋值将清除除第一次通过时cluster==1之外的所有元素。在那之后,就没有其他的了。哦,你的意思是说第二个循环不会删除i=1和3并保留2?一种方法:Atmp我尝试了这个方法,它奏效了。有没有其他方法可以有效地编写相同的代码。。?
A <- transform(A, cluster = paste0("cluster_", cluster))
a_ttest_list <- by(A, A$cluster, proc_ttest)

a_ttest_list$cluster_1
a_ttest_list$cluster_2
a_ttest_list$cluster_3

B <- transform(B, cluster = paste0("cluster_", cluster))
b_ttest_list <- by(B, B$cluster, proc_ttest)

b_ttest_list$cluster_1
b_ttest_list$cluster_2
b_ttest_list$cluster_3