作者lovelySky (浣青)
站内Statistics
标题[程式] R回圈结果输出的问题
时间Tue Feb 16 15:23:50 2010
------------------------------------------------------------------------
[软体程式类别]:
R
[程式问题]:
应该算是简单的资料分析与回圈。 t-test结果输出
[软体熟悉度]:
新手(不到1个月)
[问题叙述]:
我的data大概是长下面这个样子↓
A10 A11 A12.....A19 A20 A21...........
[1] 1 1 2 1 4 5
[2]
~~~
~~~
[30]
我要做的是将每一列针对
绿色字(A1X)和
黄色字(A2X)为对比分别做t-test
我的想法是把最大的矩阵分割为两个小矩阵(normal & tumor)
然後要求他以第一列对应第一列的方式来做t-test
换言之最後要做30个t-test
虽然也可以用最笨的方法慢慢写:
n1=nomal[1,]
t1=tumor[1,]
t.test(n1,t1)
↑然後重复30遍
不过这样的写法实在太冗长了,
所以想试试看用回圈的方式,但按照现在的写法只能跑出最後一笔数据
想问问看要怎麽写才能够让他每一笔资料都出现结果
我曾经试过用sink,append=TRUE的方式来写,但是失败了Orz
下面把我写的程式附上,因为我只是个新手,可能有些看起来很奇怪的程式语法
如果有的话希望大家帮忙指正
或是有什麽更好的写法也请大家不吝赐教<(_ _)>
谢谢大家。
[程式范例]:(有问题的部分是黄色的字)
rm(list=ls())
library(RODBC)
A <- odbcConnectExcel2007("D:/data/Anne.xlsx")
all <- sqlQuery(A,"select*from[Sheet1$]")
nomal <- all[c(2:133)]
tumor <- all[c(134:244)]
n <- NULL
n <- as.vector(n)
a <- NULL
a <- as.vector(a)
i=1
for(i in 1:30)
{
n = nomal[i,]
a = tumor[i,]
e <- t.test(n,a)
i=i+1
e
}
-----------------------------------------------------------------------------
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.165.130.45
1F:→ clickhere:normal和tumor是matrix? 02/16 21:50
→ lovelySky:是matrix没错 写得有点不清楚,我再补充一下好了,谢谢您!02/16 22:29
2F:推 mrk:你可以另外用一个矩阵来存结果 02/17 02:35
这个方法我有想过,但不知道该怎麽实际来写。
所以很对不起,是不是能讲得再清楚一些呢?
我的问题在於:
t-test的结果并非一个vector、matrix或是dataframe
这三者的相互转换方法我知道,但t-test的结果要如何摆到矩阵里头呢?
需不需要做些资料类型上的转换?
刚接触R,还有很多搞不清楚的地方,有些问题可能很笨.....
还是非常谢谢您<(_ _)>
3F:→ clickhere:is.matrix()可以确定它们是否为matrix. 02/17 05:23
了解了,本来的写法normal和tumor的确不是matrix,
後来加上 nomal <- as.matrix(nomal[1:132])
tumor <- as.matrix(tumor[1:111]) 这两行指令以後就转为矩阵了
感谢指正<(_ _)>
※ 编辑: lovelySky 来自: 118.165.142.164 (02/17 14:27)
4F:→ diplazium:回圈中的e要宣告为list,然後每一个回圈的结果为e[[i]] 02/19 11:23
5F:→ lovelySky:感谢!!马上去试试看^^ 02/19 20:24