[程式] R迴圈結果輸出的問題

看板Statistics作者 (浣青)時間16年前 (2010/02/16 15:23), 編輯推噓1(104)
留言5則, 4人參與, 最新討論串1/1
------------------------------------------------------------------------ [軟體程式類別]: 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

02/16 21:50, , 1F
normal和tumor是matrix?
02/16 21:50, 1F
lovelySky:是matrix沒錯 寫得有點不清楚,我再補充一下好了,謝謝您!02/16 22:29

02/17 02:35, , 2F
你可以另外用一個矩陣來存結果
02/17 02:35, 2F
這個方法我有想過,但不知道該怎麼實際來寫。 所以很對不起,是不是能講得再清楚一些呢? 我的問題在於: t-test的結果並非一個vector、matrix或是dataframe 這三者的相互轉換方法我知道,但t-test的結果要如何擺到矩陣裡頭呢? 需不需要做些資料類型上的轉換? 剛接觸R,還有很多搞不清楚的地方,有些問題可能很笨..... 還是非常謝謝您<(_ _)>

02/17 05:23, , 3F
is.matrix()可以確定它們是否為matrix.
02/17 05:23, 3F
了解了,本來的寫法normal和tumor的確不是matrix, 後來加上 nomal <- as.matrix(nomal[1:132]) tumor <- as.matrix(tumor[1:111]) 這兩行指令以後就轉為矩陣了 感謝指正<(_ _)> ※ 編輯: lovelySky 來自: 118.165.142.164 (02/17 14:27)

02/19 11:23, , 4F
迴圈中的e要宣告為list,然後每一個迴圈的結果為e[[i]]
02/19 11:23, 4F

02/19 20:24, , 5F
感謝!!馬上去試試看^^
02/19 20:24, 5F
文章代碼(AID): #1BUaW8lX (Statistics)