2016-06-20 81 views
2

我有一個SQL表通過dplyr設置是這樣的:在dplyr mutate中使用自定義函數?

num     gameday_link stand b_height  px pz type 
1 1 gid_2016_04_05_houmlb_nyamlb_1  R  5-6 0.194 3.225 B 
2 1 gid_2016_04_05_houmlb_nyamlb_1  R  5-6 0.510 1.965 S 
3 1 gid_2016_04_05_houmlb_nyamlb_1  R  5-6 -1.367 2.459 B 

我想要做的就是添加一個名爲正確的附加列,其中包含稱爲isCallCorrectV的自定義功能在T或F結果。 isCallCorrectV的參數是表中的列。

這裏是isCallCorrectV的例子在行動:

> isCallCorrectV(c(0.0, 2.5), c(2.5, 0), c("S", "B"), c("6-0", "5-0"), c("R", "L")) 
[1] TRUE FALSE 

我嘗試使用這個命令,但我得到一個錯誤。

dplyr::mutate(noswings, correct = isCallCorrectV(px, pz, type, b_height, stand)) 
Error in sqliteSendQuery(conn, statement) : 
error in statement: no such function: ISCALLCORRECTV 
+0

提供用於功能代碼和R中不那拼寫是大小寫敏感的。 –

+1

這聽起來像你是在使用SQLite後端?這不適用於用R編寫的自定義函數。如果你看[dplyr在數據庫上的小插曲](https://cran.r-project.org/web/packages/dplyr/vignettes/databases.html),你可以找到'dplyr'知道如何轉換成SQL的R函數的列表(並且'isCallCorrect'不在該列表中)。 – Gregor

+0

@ 42-添加的定義 – zkello

回答

1

根據Gregor的評論,在sql數據庫中不能使用dplyr中的自定義函數。只能使用定義爲here的功能。

所以我的選擇是:

(1)將數據讀入R和那裏使用的自定義R的功能和操作就可以了,或者(2)改寫自定義功能在SQL和數據庫中定義它們

我可以使用dplyr收集命令將數據讀入R.

+0

斷開的鏈接,似乎沒有更多 – Ferroao

相關問題