作者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