Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有一个函数't.test()`在R中输入多个变量_R_Function - Fatal编程技术网

有一个函数't.test()`在R中输入多个变量

有一个函数't.test()`在R中输入多个变量,r,function,R,Function,我想知道是否有一种方法可以避免使用t.test 3次来比较3个变量x1、x2和x3,而是使用t.test一次来获取输入到其中的任意两个变量 例如,对于:x1=rnorm20;x2=rnorm20;x3=rnorm20,我现在使用:t.testx1,x2;t、 testx1,x3;t、 testx2,x3,但我可以只使用t.test一次吗 以下是我尝试过但没有成功的方法: 如果要随机使用任何变量,请尝试以下操作: s = sample(x = c("x1","x2","x3"),size = 2,

我想知道是否有一种方法可以避免使用t.test 3次来比较3个变量x1、x2和x3,而是使用t.test一次来获取输入到其中的任意两个变量

例如,对于:x1=rnorm20;x2=rnorm20;x3=rnorm20,我现在使用:t.testx1,x2;t、 testx1,x3;t、 testx2,x3,但我可以只使用t.test一次吗

以下是我尝试过但没有成功的方法:


如果要随机使用任何变量,请尝试以下操作:

s = sample(x = c("x1","x2","x3"),size = 2,replace = F)
t.test(eval(parse(text=s[1])),eval(parse(text=s[2])))

如果要随机使用任何变量,请尝试以下操作:

s = sample(x = c("x1","x2","x3"),size = 2,replace = F)
t.test(eval(parse(text=s[1])),eval(parse(text=s[2])))
我们可以使用成对t检验

以OP公司为例

pairwise.t.test(c(x1, x2, x3), rep(paste0("x", 1:3), each = 20), p.adj = "bonf")

#     Pairwise comparisons using t tests with pooled SD 

#data:  c(x1, x2, x3) and rep(paste0("x", 1:3), each = 20) 

#     x1    x2    
# x2 0.486 -    
# x3 1.000 0.095
数据 我们可以使用成对t检验

以OP公司为例

pairwise.t.test(c(x1, x2, x3), rep(paste0("x", 1:3), each = 20), p.adj = "bonf")

#     Pairwise comparisons using t tests with pooled SD 

#data:  c(x1, x2, x3) and rep(paste0("x", 1:3), each = 20) 

#     x1    x2    
# x2 0.486 -    
# x3 1.000 0.095
数据
与您刚才关于cor的问题类似,以下是处理成对计算的语法:

set.seed(21L)
x1 <- rnorm(20); x2 <- rnorm(20); x3 <- rnorm(20)

pcor <- function(...) {
    combn(list(...), 
        2,  
        function(y) cor(y[[1]], y[[2]]),
        simplify=FALSE)
}
pcor(x1, x2, x3)

pttest <- function(...) {
    combn(list(...), 
        2,  
        function(a) t.test(x=a[[1]], y=a[[2]]) #change this to whatever your want
        simplify=FALSE)
}
pttest(x1, x2, x3)

与您刚才关于cor的问题类似,以下是处理成对计算的语法:

set.seed(21L)
x1 <- rnorm(20); x2 <- rnorm(20); x3 <- rnorm(20)

pcor <- function(...) {
    combn(list(...), 
        2,  
        function(y) cor(y[[1]], y[[2]]),
        simplify=FALSE)
}
pcor(x1, x2, x3)

pttest <- function(...) {
    combn(list(...), 
        2,  
        function(a) t.test(x=a[[1]], y=a[[2]]) #change this to whatever your want
        simplify=FALSE)
}
pttest(x1, x2, x3)

通过使用两两t检验,必须调整alpha值。Bonferroni校正常用于农业,Holm有时用于医学。如果不进行这样的校正,一个人的差异会比应该的更显著。

通过使用两两t检验,必须调整alpha值。Bonferroni校正常用于农业,Holm有时用于医学。没有这样的校正,一个人的差异比它应该的更显著。

正是因为这个原因,才使用方差分析。正确。t、 这个测试对一对变量有效,你必须执行三个测试,在三次检查你的假设时传播错误。方差分析通过比较多个变量的假设来避免这种情况。如果你想用t.test做一次,那是不可能的。@TUSHAr,我完全理解!但我的问题是一个编程问题!我只是想知道我能不能让R中的t.test函数从编程的角度做我想做的事情?你可以使用pairwise.t.test并用一种可能的校正方法调整pvaluebonferroni@rnorouzian请核对我的答案。这能解决你的问题吗?正是因为这个原因,我们使用了方差分析。正确。t、 这个测试对一对变量有效,你必须执行三个测试,在三次检查你的假设时传播错误。方差分析通过比较多个变量的假设来避免这种情况。如果你想用t.test做一次,那是不可能的。@TUSHAr,我完全理解!但我的问题是一个编程问题!我只是想知道我能不能让R中的t.test函数从编程的角度做我想做的事情?你可以使用pairwise.t.test并用一种可能的校正方法调整pvaluebonferroni@rnorouzian请核对我的答案。这是否解决了您的问题?如果您想要类似的输出,请检查lower.tri。您所做的一切都可以写成:combnda.framex1,x2,x3,2,functionxt.testx[1],x[2],fc如果您想要类似的输出,请检查lower.tri。您所做的一切都可以写成:combnda.framex1,x2,x3,2,functionxt.testx[1],x[2],F