2015-11-08 36 views
-6

我有一個函數,其中x是0和1之間:如何使用鏈運算符在R中自行計算?

enter image description here

如何使用連鎖經營%>%dplyr包做呢?

我試過如下:

x = 0.5 
y <- (x-1)^2 %>% 1-. %>% sqrt() 

但這是錯誤的!我怎樣才能找到一個連鎖經營者自己做計算的方法?我在這裏只是一個小例子。我有一個很長的等式,並希望鏈代碼使得代碼可讀。

+5

使用magrittr的鏈運算符。 '(x-1)^ 2%>%{sqrt(1-。)}'https://cran.r-project.org/web/packages/magrittr/vignettes/magrittr.html – Frank

+1

@Frank,謝謝! {}是解決方案! (2) – xirururu

+8

'computeY < - function(x){sqrt(1-(x-1)^ 2))}' –

回答

13

促進我一個答案評論爲OP似乎同意(並在此過程中除去虛假)):

computeY <- function(x) { sqrt(1-(x-1)^2) } 

其在提示符下工作,以及:

R> computeY <- function(x) { sqrt(1-(x-1)^2) } 
R> sapply((1:5)/10, computeY) 
[1] 0.435890 0.600000 0.714143 0.800000 0.866025 
R> 

免責聲明:在這個答案的生產中沒有管道受到傷害。

+8

'computeY((1:5)/ 10)'在這種情況下(而不是'sapply')起作用。 – Frank

+2

Doh。好點子。我寫了要被矢量化的函數。 –