1

我有一个包含 4 列和 679 行的数据框,我需要使用genefilter 包中的da 函数rowttest 执行测试。想要列出前两列和另外两列。

A_R1   A_R2   B_R1    B_R2  
1       2       7      7
4       5       8      7.5
5       5       9      NA
6       5       10     NA
...

我使用了这段代码,但我不确定“fac”是什么意思。我以为是行数。

#t.test is the dataframe used
ttest2=na.omit(ttest)
rowttests(as.matrix(ttest2),fac=679,tstatOnly = FALSE)

我有这个错误:

Error in function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘rowttests’ for signature ‘"matrix", "numeric"’

或者

Error in rowcoltt(x, factor(integer(ncol(x))), tstatOnly, 1L) : 
  Invalid argument 'x': must be a real matrix.

有人可以帮助我吗?

4

3 回答 3

3

第二个参数是表示执行 t 检验的(列)组的因素。

> m=matrix(runif(80), 20)
> rowttests(m, factor(c("M", "M", "F", "F")))
      statistic           dm     p.value
1    1.15567467  0.297622456 0.367224496
2    0.81334422  0.328723537 0.501449912
....
于 2013-02-27T14:49:03.957 回答
1

数据不能是整数矩阵!!!

# x 是这里的 INTEGERS 的 data.frame ...

x <- read.table("HFLF.txt", header=TRUE, row.names=1)
g <- c("HF","HF","LF","LF")   
results<- rowttests(x, factor(g))

(函数(类,fdef,mtable)中的错误:无法为签名'“data.frame”,“因子”'找到函数'rowttests'的继承方法</p>

# 尝试将 x 从数据帧转换为矩阵 ...

x <- as.matrix(read.table("HFLF.txt", header=TRUE, row.names=1))
g <- c("HF","HF","LF","LF")
results<- rowttests(x, factor(g))

rowcoltt(x, fac, tstatOnly, 1L) 中的错误:无效参数“x”:必须是实数矩阵。

# x 在这里是实数的数据帧(带小数位)...

x <- read.table("HFLF.txt", header=TRUE, row.names=1)
g <- c("HF","HF","LF","LF")
results<- rowttests(x, factor(g))

(函数(类,fdef,mtable)中的错误:无法为签名'“data.frame”,“因子”'找到函数'rowttests'的继承方法</p>

# 尝试将 x 从数据帧转换为矩阵 ...

results<- rowttests(as.matrix(x), factor(g))
head(results)   

我从“Joran”在这里发布的内容中弄清楚了: http ://w3facility.org/question/conversion-of-data-frame-to-matrix-error/

于 2015-04-28T19:53:53.563 回答
0

看?rowtests

rowttests(x, fac, tstatOnly = FALSE) x 数字矩阵 和 fac 编码要测试的分组的因子

在这里,您给出一个矩阵和一个数字,您必须将数字强制转换为一个因子。所以改变

rowttests(as.matrix(ttest2),fac=679,tstatOnly = FALSE)

rowttests(as.matrix(ttest2),fac=factor(679),tstatOnly = FALSE)
于 2013-02-27T09:45:56.700 回答