2013-05-08 14 views
7

sorgular? Örneğin.Çağrı R fonksiyonları sqldf sorgularından R işlevleri çağırmak için bir yolu var mı

sqldf("select paste('Hello', 'World')") 

Veya SQLite motoru içinde sqldf'nin arkasındaki özel işlevleri veya saklı yordamları tanımlamanın bir yolu var mı? (Düz eski bellek içi R veri çerçeveleriyle sqldf kullanıyorum; herhangi bir gerçek veritabanına bağlamıyorum.)

+0

Yerleşik SQLite işlevleri yerine R işlevlerini neden kullanırsınız? – joran

+0

Bence cevap basitçe, hayır. – nograpes

+0

joran: aslında, ilgilendiğim özel fonksiyon, MD5 hash'ları –

cevap

12

1) Mevcut İşlevler İlk önce, istediğiniz işlevin mevcut olmadığından emin olun. Bir SQLite'nın SQL sürümü artı kullanıcıya çok sayıda gelen tüm SQL fonksiyonları dışında işlevleri tanımlamıştır

> sqldf("select 'Hello' || ' ' || 'world' ") 
    'Hello' || ' ' || 'world' 
1    Hello world 

2) RSQLite.extfuns: Örneğin, söz konusu kod doğrudan zaten SQL desteklenmektedir RSQLite.extfuns paketindeki kutu (sqldf tarafından otomatik olarak yüklenir). varolan herhangi bir sqlite yüklenebilen eklentileri içinde

3) Diğer Yüklenebilir Uzantıları Fonksiyonlar sqlite SQL fonksiyonu load_extension() yoluyla yüklenebilir. Örneğin. these extensions

4) Özel fonksiyonlarını Özel işlevlerinin SQLite'ın eklenebilir ancak in C yazılmalıdır bakın.

5) PostgreSQL & sqldf sqldf sadece sqlite değil destek vermenin yanısıra, PostgreSQL ve MySQL h2. postgresql bu açıdan özellikle güçlüdür. Bkz. this link from the postgresql documentation Ayrıca bkz. Pl/R ve R Embedded Postgres package.

6) H2 & sqldf H2 veritabanı sqldf tarafından desteklenmektedir. RH2 sürücüsü R paketinde sqlite H2'nin sağda bulunması gibi, ayrı bir veritabanı kurmak zorunda kalmazsınız; Ancak, Java'yı yüklemeniz gerekir. Bir yerleşik SHA256 hash işlevi vardır (hash denir).

7) & R sql sqldf karıştırın ve R böyle karışık olabilir: H2 tarihinde eklendi bilgi:

library(digest) 
transform(sqldf("select * from BOD"), digest = sapply(demand, digest)) 

8) Diğer bu SO question and answers

GÜNCELLEME bakınız.

İlgili konular