2014-03-03 76 views
0

我想學習如何使用用途不同的應用家庭R.我有以下數字矢量lapply和傳遞參數

>aa 
[1] 0.047619 0.000000  NaN 0.000000 0.000000 0.000000 0.000000 0.000000 
[9]  NaN  NaN 0.000000  NaN  NaN  NaN  NaN  NaN 
[17] 0.000000 0.000000  NaN  NaN  NaN  NaN  NaN  NaN 
[25]  NaN 0.100000 0.000000 0.000000 0.000000 0.000000 1.000000  NaN 
[33]  NaN  NaN  NaN  NaN  NaN  NaN 0.133333  NaN 
[41]  NaN 0.000000 0.000000 0.000000  NaN  NaN  NaN  NaN 
[49]  NaN 

,我試圖用得到n因素出pwr.t.test每一個都作爲d參數的輸入。

我嘗試(S)已經取得了本作的最新成果,並坦率地說,我很爲難...>lapply(aa,function(x) pwr.t.test(d=x,power=.8,sig.level=.05,type="one.sample",alternative="two.sided"))

與以下錯誤消息:

Error in uniroot(function(n) eval(p.body) - power, c(2 + 1e-10, 1e+07)) : 
    f() values at end points not of opposite sign 

上的任何想法正確的方式來做到這一點?

+1

你似乎做得很對,但是你確定該函數能夠很好的處理值0.000000和NaN? – BrodieG

+0

你是對的!它討厭那些投入......看起來它只想要非零數字。 – testname123

回答

0

簡答題:需要的主題數量大於R將檢查的最大數量。添加一些檢查,以便您在d == 0時不運行該功能,並且它將起作用。

d = 0時,您需要無數個主題來檢測差異。您看到的錯誤是因爲R試圖以數字方式計算功率。算法R使用首先檢查N的可能值所在區間的範圍(約21e+07)。由於功率函數在間隔的兩個端點具有相同的符號,並且在N中單調,R會拋出一個錯誤,指出找不到根(您正在查找的值爲N)。