Re: [問題] R
※ 引述《Chris7462.bbs@ptt.cc (~烤焦麵包~)》之銘言:
> 抱歉,我重複一次我的問題,沒有講的很明白,可能有人誤會了。
> 我有一個 command.R 的檔案,放在 c: 下,裡面的內容是
> sink("c:\\sink.txt" );
> i <- 1:10 ;
> outer(i, i, "*") ;
> sink();
首先, 每一行末的分號 ";" 是多餘的!
雖然在 R 中可用分號來將兩個執行項寫在同一行,
但在這應是 SAS 的習慣不當引用吧?!
> 然後我在 R 的 command line 下指令
> > source("c:\\command.R")
> 要 R 幫我執行 command.R 的內容。
> R 確實會幫我生成 sink.txt 這個檔案,可是 sink.txt 裡面卻沒有任何的資料?
Trick: 將
outer(i, i, "*")
改為
print(outer(i, i, "*"))
即可.
順代一提的是, 這可簡化為 print(outer(i, i)),
因為
> str(outer)
function (X, Y, FUN = "*", ...)
這個 trick 同樣需要在如下於 Console 中執行的 loop.
> for(n in 3:5) {
+ outer(1:n, 1:n)
+ }
>
> for(n in 3:5) {
+ print(outer(1:n, 1:n))
+ }
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 2 4 6
[3,] 3 6 9
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 2 4 6 8
[3,] 3 6 9 12
[4,] 4 8 12 16
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 2 4 6 8 10
[3,] 3 6 9 12 15
[4,] 4 8 12 16 20
[5,] 5 10 15 20 25
> 如果是一行一行的打指令,sink.txt 的結果應該是下面這樣才對
> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
> [1,] 1 2 3 4 5 6 7 8 9 10
> [2,] 2 4 6 8 10 12 14 16 18 20
> [3,] 3 6 9 12 15 18 21 24 27 30
> [4,] 4 8 12 16 20 24 28 32 36 40
> [5,] 5 10 15 20 25 30 35 40 45 50
> [6,] 6 12 18 24 30 36 42 48 54 60
> [7,] 7 14 21 28 35 42 49 56 63 70
> [8,] 8 16 24 32 40 48 56 64 72 80
> [9,] 9 18 27 36 45 54 63 72 81 90
> [10,] 10 20 30 40 50 60 70 80 90 100
> 還是我弄錯了什麼東西?
> 有請版上的高手解惑了,謝謝。
--
夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子
之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下
矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以
喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦將知止知止可以不殆譬道之在天下210.66.0.241海
Chris7462:謝謝,受教了。 01/22 01:17
討論串 (同標題文章)