使用rstudio构建z测试时返回函数位置

使用rstudio构建z测试时返回函数位置,r,function,R,Function,我已将以下功能作为 z.test1<-function(H0,ssd,smean,n,alpha){ smean<-mean(x) ssd<-var(x) n<-length(x) z_stat<-(smean-H0)/(ssd/sqrt(n)) z=qnorm(1-(alpha/2)) if(isTRUE(abs(z_stat)<z)==T)

我已将以下功能作为

z.test1<-function(H0,ssd,smean,n,alpha){
        smean<-mean(x)
        ssd<-var(x)
        n<-length(x)
        z_stat<-(smean-H0)/(ssd/sqrt(n))
        z=qnorm(1-(alpha/2))
        if(isTRUE(abs(z_stat)<z)==T) 
          {conclusion = 'accept H0'}
        else 
          {conclusion = 'reject H0'}
        p.value=pnorm(abs(z_stat),lower.tail = F)*2
        test=c(H0,smean,n,ssd^2,z_stat,z,p.value,conclusion)
        name=c('Null hypothesis','Sample mean','Sample size','Population variance','Test statistics',
               'Critical value','p-value','conclusion')
        result=c(cat('using the numeric vector x, the below information were acquired\n'),
                    data.frame(section=name,value=test))
      }
      return(result)
}
1无效假设0

2样本平均数2.39127681132961

3样本量30

4人口方差2652.78931271861

5测试统计数据0.254295748961784

6临界值1.64485362695147

7 p值0.399633541861594

8结论接受H0

f<-function(x,y){
  if (!exists('y')==T){#one sample test
    if (length(x)>=30){
      #z-test
      H0<-as.integer(readline("Type null hypothesis(H0) in number:"))
      alpha<-as.integer(readline("Type your alpha value:"))
      form<-(readline("Form of H0(left/right/both):"))
      if ((form=='both')==T){
      z.test1<-function(H0,ssd,smean,n,alpha){
        smean<-mean(x)
        ssd<-var(x)
        n<-length(x)
        z_stat<-(smean-H0)/(ssd/sqrt(n))
        z=qnorm(1-(alpha/2)) #alpha = 유의수준
        if(isTRUE(abs(z_stat)<z)==T) 
          {conclusion = 'accept H0'}
        else 
          {conclusion = 'reject H0'}
        p.value=pnorm(abs(z_stat),lower.tail = F)*2
        test=c(H0,smean,n,ssd^2,z_stat,z,p.value,conclusion)
        name=c('Null hypothesis','Sample mean','Sample size','Population variance','Test stastistics',
               'Confidence interval','p-value','conclusion')
        result<-data.frame(section=name,value=test)
        return(result) 
      }
      }
      else if((form=='left')==T){
        z.test1<-function(H0,ssd,smean,n,alpha){
          smean<-mean(x)
          ssd<-var(x)
          n<-length(x)
          z_stat<-(smean-H0)/(ssd/sqrt(n))
          z=qnorm(alpha) #alpha = 유의수준
          if(isTRUE(z_stat<z)==T) 
            {conclusion = 'accept H0'}
          else 
            {conclusion = 'reject H0'}
          p.value=pnorm(z_stat,lower.tail = T)
          test=c(H0,smean,n,ssd^2,z_stat,z,p.value,conclusion)
          name=c('Null hypothesis','Sample mean','Sample size','Population variance','Test stastistics',
                 'Confidence interval','p-value','conclusion')
          result<-list(cat('using the numeric vector x, the below informations were acquired\n'),
                      data.frame(section=name,value=test))
          return(result)
          }
      }
      else{
        z.test1<-function(H0,ssd,smean,n,alpha){
          smean<-mean(x)
          ssd<-var(x)
          n<-length(x)
          z_stat<-(smean-H0)/(ssd/sqrt(n))
          z=qnorm(1-(alpha)) #alpha = 유의수준
          if(isTRUE(z_stat>-z)==T) 
            conclusion = 'accept H0'
          else 
            conclusion = 'reject H0'
          p.value=pnorm(z_stat,lower.tail = F)
          test=c(H0,smean,n,ssd^2,z_stat,z,p.value,conclusion)
          name=c('Null hypothesis','Sample mean','Sample size','Population variance','Test stastistics',
                 'Confidence interval','p-value','conclusion')
          result<-data.frame(section=name,value=test)
          return(result)
          }
    }
    }
      else{#30미만 
        H0<-as.integer(readline("Type null hypothesis(H0) in number:"))
        alpha<-as.integer(readline("Type your alpha value:"))
        form<-(readline("Form of H0(left/right/both):"))
        ssd<-readline('Input standard deviation of sample:')
        if ((form=='both')==T){
      t.test1<-function(H0,smean,ssd,n,alpha){
        smean<-mean(x)
        ssd<-var(x)
        n<-length(x)
        t_stat<-(smean-H0)/(ssd/sqrt(n))
        t=qt(1-(alpha/2),n-1)
        if(isTRUE(abs(t_stat)<t)==T) 
          conclusion='accept H0' 
        else conclusion='reject H0'
        p.value=(1-pt(abs(t_stat),n-1))*2
        test=c(H0,smean,n,ssd^2,t_stat,t,p.value,conclusion)
        name=c('Null hypothesis','Sample mean','Sample size','Sample variance','Test stastistics',
               'Confidence interval','p-value','conclusion')
        result<-data.frame(section=name,value=test)
        return(result)
        }
        }
      else if ((form=='left')==T){
        t.test1<-function(H0,smean,ssd,n,alpha){
          smean<-mean(x)
          ssd<-var(x)
          n<-length(x)
          t_stat<-(smean-H0)/(ssd/sqrt(n))
          t=qt(1-(alpha/2),n-1)
          if(isTRUE(t_stat<t)==T) conclusion='accept H0' 
          else conclusion='reject H0'
          p.value=(1-pt(abs(t_stat),n-1))*2
          test=c(H0,smean,n,ssd^2,t_stat,t,p.value,conclusion)
          name=c('Null hypothesis','Sample mean','Sample size','Sample variance','Test stastistics',
                 'Confidence interval','p-value','conclusion')
          result<-data.frame(section=name,value=test)
          return(result)
          }
      }
        else {
          t.test1<-function(H0,smean,ssd,n,alpha){
            smean<-mean(x)
            ssd<-var(x)
            n<-length(x)
            t_stat<-(smean-H0)/(ssd/sqrt(n))
            t=qt(1-(alpha/2),n-1)
            if(isTRUE(t_stat>-t)==T) conclusion='accept H0' 
            else conclusion='reject H0'
            p.value=(1-pt(abs(t_stat),n-1))*2
            test=c(H0,smean,n,ssd^2,t_stat,t,p.value,conclusion)
            name=c('Null hypothesis','Sample mean','Sample size','Sample variance','Test stastistics',
                   'Confidence interval','p-value','conclusion')
            result<-data.frame(section=name,value=test)
            return(result)
             }
      }
      }
  }
  else{ #two sample test
    if (length(x)>=30){
      H0<-as.integer(readline("Type null hypothesis(H0) in number:"))
      alpha<-as.integer(readline("Type your alpha value:"))
      form<-(readline("Form of H0(left/right/both):"))
      if((form=='both')==T){
      z.test2<-function(sm1,sm2,ssd1,ssd2,n1,n2,alpha){
        sm1<-mean(x)
        sm2<-mean(y)
        ssd1<-var(x)
        ssd2<-var(y)
        n1<-length(x)
        n2<-length(y)
        z_stat<-(sm1-sm2)/sqrt(ssd1^2/n1+ssd2^2/n2)
        z=qt(1-alpha/2)
        if((abs(z_stat)<z)==T){conclusion='accept H0'}
        else {conclusion="reject H0"}
        p.value=pt(abs(z_stat),df=n1-1,lower.tail = F)*2
        test=c(sm1,sm2,ssd1^2,ssd2^2,n1,n2,z0,z,p.value,conclusion)
        name=c('Sample mean 1','Sample mean 2','Population variance 1','Population variance 2',
               'Sample size 1','Sample size 2','test statistics','Confidence interval','p-value','conclusion')
        result<-data.frame(section=name,value=test)
        return(result)
        }
      }
      else if((form=='left')==T){
        z.test2<-function(sm1,sm2,ssd1,ssd2,n1,n2,alpha){
          sm1<-mean(x)
          sm2<-mean(y)
          ssd1<-var(x)
          ssd2<-var(y)
          n1<-length(x)
          n2<-length(y)
          z_stat<-(sm1-sm2)/sqrt(ssd1^2/n1+ssd2^2/n2)
          z=qt(alpha)
          if((z_stat>-z)==T)conclusion='accept H0'
          else conclusion="reject H0"
          p.value=pt(abs(z_stat),df=n1-1,lower.tail = T)
          test=c(sm1,sm2,ssd1^2,ssd2^2,n1,n2,z0,z,p.value,conclusion)
          name=c('Sample mean 1','Sample mean 2','Population variance 1','Population variance 2',
                 'Sample size 1','Sample size 2','test statistics','Confidence interval','p-value','conclusion')
          result<-data.frame(section=name,value=test)
          return(result)
          }
        }
      else{
        z.test2<-function(sm1,sm2,ssd1,ssd2,n1,n2,alpha){
          sm1<-mean(x)
          sm2<-mean(y)
          ssd1<-var(x)
          ssd2<-var(y)
          n1<-length(x)
          n2<-length(y)
          z_stat<-(sm1-sm2)/sqrt(ssd1^2/n1+ssd2^2/n2)
          z=qt(1-alpha)
          if((z_stat<z)==T)conclusion='accept H0'
          else conclusion="reject H0"
          p.value=pt(abs(z_stat),df=n1-1,lower.tail = F)
          test=c(sm1,sm2,ssd1^2,ssd2^2,n1,n2,z0,z,p.value,conclusion)
          name=c('Sample mean 1','Sample mean 2','Population variance 1','Population variance 2',
                 'Sample size 1','Sample size 2','test statistics','Confidence interval','p-value','conclusion')
          result<-data.frame(section=name,value=test)
          return(result)
          }
      }
    }
      #z-test 
      else{#30미만
        ssd<-as.integer(readline('Input standard deviation of sample:'))
        H0<-as.integer(readline("Type null hypothesis(H0) in number:"))
        alpha<-as.integer(readline("Type your alpha value:"))
        t.test2 <- function(m1,m2,ssd1,ssd2,n1,n2,m0=0,equal.variance=FALSE){
          m1<-mean(x)
          m2<-mean(y)
          ssd1<-var(x)
          ssd2<-var(y)
          n1<-length(x)
          n2<-length(y)
          if( equal.variance==FALSE ) {
            se <- sqrt((ssd1^2/n1)+(ssd2^2/n2))
            df <- ((ssd1^2/n1 + ssd2^2/n2)^2)/((ssd1^2/n1)^2/(n1-1)+(ssd2^2/n2)^2/(n2-1))
          } 
          else{
            se <- sqrt((1/n1 + 1/n2)*((n1-1)*s1^2+(n2-1)*s2^2)/(n1+n2-2) ) 
            df <- n1+n2-2
          }      
          t <- (m1-m2-m0)/se 
          test=c(m1,m2,ssd1,ssd2,n1,n2,(m1-m2), se, t, 2*pt(-abs(t),df))    
          names=c('Sample mean 1','Sample mean 2','Population variance 1','Population variance 2',
                  'Sample size 1','Sample size 2','Difference of means', 'Std Error', 'test stastics','p-value')
          result<-data.frame(section=name,value=test)
          return(result)
          }
      } 
      }
}
f=30){
#z-检验

H0这是一个相当常见的初学者程序员困惑…当您使用
cat()
打印某个内容时,函数返回的值是
NULL
。下面是一个简单的示例,您可以在提示时使用(与嵌入函数时相比,调试/查看发生了什么更容易):

还有几点:

  • cat()
    无法处理数据帧;您必须单独使用
    print()
    cat()
    组件
  • 这将有助于有一个可复制的例子

谢谢你的评论。我想要的结果是打印出来的是“使用数值向量x,获得了以下信息”,以及下面的计算数据框。我现在正在处理它,但仍然无法将两者都作为函数的结果。你能编辑你的问题以包含一个可复制的示例吗(即输入和期望输出的具体示例)?我已编辑了问题!
f<-function(x,y){
  if (!exists('y')==T){#one sample test
    if (length(x)>=30){
      #z-test
      H0<-as.integer(readline("Type null hypothesis(H0) in number:"))
      alpha<-as.integer(readline("Type your alpha value:"))
      form<-(readline("Form of H0(left/right/both):"))
      if ((form=='both')==T){
      z.test1<-function(H0,ssd,smean,n,alpha){
        smean<-mean(x)
        ssd<-var(x)
        n<-length(x)
        z_stat<-(smean-H0)/(ssd/sqrt(n))
        z=qnorm(1-(alpha/2)) #alpha = 유의수준
        if(isTRUE(abs(z_stat)<z)==T) 
          {conclusion = 'accept H0'}
        else 
          {conclusion = 'reject H0'}
        p.value=pnorm(abs(z_stat),lower.tail = F)*2
        test=c(H0,smean,n,ssd^2,z_stat,z,p.value,conclusion)
        name=c('Null hypothesis','Sample mean','Sample size','Population variance','Test stastistics',
               'Confidence interval','p-value','conclusion')
        result<-data.frame(section=name,value=test)
        return(result) 
      }
      }
      else if((form=='left')==T){
        z.test1<-function(H0,ssd,smean,n,alpha){
          smean<-mean(x)
          ssd<-var(x)
          n<-length(x)
          z_stat<-(smean-H0)/(ssd/sqrt(n))
          z=qnorm(alpha) #alpha = 유의수준
          if(isTRUE(z_stat<z)==T) 
            {conclusion = 'accept H0'}
          else 
            {conclusion = 'reject H0'}
          p.value=pnorm(z_stat,lower.tail = T)
          test=c(H0,smean,n,ssd^2,z_stat,z,p.value,conclusion)
          name=c('Null hypothesis','Sample mean','Sample size','Population variance','Test stastistics',
                 'Confidence interval','p-value','conclusion')
          result<-list(cat('using the numeric vector x, the below informations were acquired\n'),
                      data.frame(section=name,value=test))
          return(result)
          }
      }
      else{
        z.test1<-function(H0,ssd,smean,n,alpha){
          smean<-mean(x)
          ssd<-var(x)
          n<-length(x)
          z_stat<-(smean-H0)/(ssd/sqrt(n))
          z=qnorm(1-(alpha)) #alpha = 유의수준
          if(isTRUE(z_stat>-z)==T) 
            conclusion = 'accept H0'
          else 
            conclusion = 'reject H0'
          p.value=pnorm(z_stat,lower.tail = F)
          test=c(H0,smean,n,ssd^2,z_stat,z,p.value,conclusion)
          name=c('Null hypothesis','Sample mean','Sample size','Population variance','Test stastistics',
                 'Confidence interval','p-value','conclusion')
          result<-data.frame(section=name,value=test)
          return(result)
          }
    }
    }
      else{#30미만 
        H0<-as.integer(readline("Type null hypothesis(H0) in number:"))
        alpha<-as.integer(readline("Type your alpha value:"))
        form<-(readline("Form of H0(left/right/both):"))
        ssd<-readline('Input standard deviation of sample:')
        if ((form=='both')==T){
      t.test1<-function(H0,smean,ssd,n,alpha){
        smean<-mean(x)
        ssd<-var(x)
        n<-length(x)
        t_stat<-(smean-H0)/(ssd/sqrt(n))
        t=qt(1-(alpha/2),n-1)
        if(isTRUE(abs(t_stat)<t)==T) 
          conclusion='accept H0' 
        else conclusion='reject H0'
        p.value=(1-pt(abs(t_stat),n-1))*2
        test=c(H0,smean,n,ssd^2,t_stat,t,p.value,conclusion)
        name=c('Null hypothesis','Sample mean','Sample size','Sample variance','Test stastistics',
               'Confidence interval','p-value','conclusion')
        result<-data.frame(section=name,value=test)
        return(result)
        }
        }
      else if ((form=='left')==T){
        t.test1<-function(H0,smean,ssd,n,alpha){
          smean<-mean(x)
          ssd<-var(x)
          n<-length(x)
          t_stat<-(smean-H0)/(ssd/sqrt(n))
          t=qt(1-(alpha/2),n-1)
          if(isTRUE(t_stat<t)==T) conclusion='accept H0' 
          else conclusion='reject H0'
          p.value=(1-pt(abs(t_stat),n-1))*2
          test=c(H0,smean,n,ssd^2,t_stat,t,p.value,conclusion)
          name=c('Null hypothesis','Sample mean','Sample size','Sample variance','Test stastistics',
                 'Confidence interval','p-value','conclusion')
          result<-data.frame(section=name,value=test)
          return(result)
          }
      }
        else {
          t.test1<-function(H0,smean,ssd,n,alpha){
            smean<-mean(x)
            ssd<-var(x)
            n<-length(x)
            t_stat<-(smean-H0)/(ssd/sqrt(n))
            t=qt(1-(alpha/2),n-1)
            if(isTRUE(t_stat>-t)==T) conclusion='accept H0' 
            else conclusion='reject H0'
            p.value=(1-pt(abs(t_stat),n-1))*2
            test=c(H0,smean,n,ssd^2,t_stat,t,p.value,conclusion)
            name=c('Null hypothesis','Sample mean','Sample size','Sample variance','Test stastistics',
                   'Confidence interval','p-value','conclusion')
            result<-data.frame(section=name,value=test)
            return(result)
             }
      }
      }
  }
  else{ #two sample test
    if (length(x)>=30){
      H0<-as.integer(readline("Type null hypothesis(H0) in number:"))
      alpha<-as.integer(readline("Type your alpha value:"))
      form<-(readline("Form of H0(left/right/both):"))
      if((form=='both')==T){
      z.test2<-function(sm1,sm2,ssd1,ssd2,n1,n2,alpha){
        sm1<-mean(x)
        sm2<-mean(y)
        ssd1<-var(x)
        ssd2<-var(y)
        n1<-length(x)
        n2<-length(y)
        z_stat<-(sm1-sm2)/sqrt(ssd1^2/n1+ssd2^2/n2)
        z=qt(1-alpha/2)
        if((abs(z_stat)<z)==T){conclusion='accept H0'}
        else {conclusion="reject H0"}
        p.value=pt(abs(z_stat),df=n1-1,lower.tail = F)*2
        test=c(sm1,sm2,ssd1^2,ssd2^2,n1,n2,z0,z,p.value,conclusion)
        name=c('Sample mean 1','Sample mean 2','Population variance 1','Population variance 2',
               'Sample size 1','Sample size 2','test statistics','Confidence interval','p-value','conclusion')
        result<-data.frame(section=name,value=test)
        return(result)
        }
      }
      else if((form=='left')==T){
        z.test2<-function(sm1,sm2,ssd1,ssd2,n1,n2,alpha){
          sm1<-mean(x)
          sm2<-mean(y)
          ssd1<-var(x)
          ssd2<-var(y)
          n1<-length(x)
          n2<-length(y)
          z_stat<-(sm1-sm2)/sqrt(ssd1^2/n1+ssd2^2/n2)
          z=qt(alpha)
          if((z_stat>-z)==T)conclusion='accept H0'
          else conclusion="reject H0"
          p.value=pt(abs(z_stat),df=n1-1,lower.tail = T)
          test=c(sm1,sm2,ssd1^2,ssd2^2,n1,n2,z0,z,p.value,conclusion)
          name=c('Sample mean 1','Sample mean 2','Population variance 1','Population variance 2',
                 'Sample size 1','Sample size 2','test statistics','Confidence interval','p-value','conclusion')
          result<-data.frame(section=name,value=test)
          return(result)
          }
        }
      else{
        z.test2<-function(sm1,sm2,ssd1,ssd2,n1,n2,alpha){
          sm1<-mean(x)
          sm2<-mean(y)
          ssd1<-var(x)
          ssd2<-var(y)
          n1<-length(x)
          n2<-length(y)
          z_stat<-(sm1-sm2)/sqrt(ssd1^2/n1+ssd2^2/n2)
          z=qt(1-alpha)
          if((z_stat<z)==T)conclusion='accept H0'
          else conclusion="reject H0"
          p.value=pt(abs(z_stat),df=n1-1,lower.tail = F)
          test=c(sm1,sm2,ssd1^2,ssd2^2,n1,n2,z0,z,p.value,conclusion)
          name=c('Sample mean 1','Sample mean 2','Population variance 1','Population variance 2',
                 'Sample size 1','Sample size 2','test statistics','Confidence interval','p-value','conclusion')
          result<-data.frame(section=name,value=test)
          return(result)
          }
      }
    }
      #z-test 
      else{#30미만
        ssd<-as.integer(readline('Input standard deviation of sample:'))
        H0<-as.integer(readline("Type null hypothesis(H0) in number:"))
        alpha<-as.integer(readline("Type your alpha value:"))
        t.test2 <- function(m1,m2,ssd1,ssd2,n1,n2,m0=0,equal.variance=FALSE){
          m1<-mean(x)
          m2<-mean(y)
          ssd1<-var(x)
          ssd2<-var(y)
          n1<-length(x)
          n2<-length(y)
          if( equal.variance==FALSE ) {
            se <- sqrt((ssd1^2/n1)+(ssd2^2/n2))
            df <- ((ssd1^2/n1 + ssd2^2/n2)^2)/((ssd1^2/n1)^2/(n1-1)+(ssd2^2/n2)^2/(n2-1))
          } 
          else{
            se <- sqrt((1/n1 + 1/n2)*((n1-1)*s1^2+(n2-1)*s2^2)/(n1+n2-2) ) 
            df <- n1+n2-2
          }      
          t <- (m1-m2-m0)/se 
          test=c(m1,m2,ssd1,ssd2,n1,n2,(m1-m2), se, t, 2*pt(-abs(t),df))    
          names=c('Sample mean 1','Sample mean 2','Population variance 1','Population variance 2',
                  'Sample size 1','Sample size 2','Difference of means', 'Std Error', 'test stastics','p-value')
          result<-data.frame(section=name,value=test)
          return(result)
          }
      } 
      }
}
x <- cat("abc")
## abc
print(x)
## NULL
f <- function(x) {
    cat("the mean of x is", mean(x), "\n")
    return(mean(x))
}