« Dagslänkar 2006-10-28 | Main | Dagslänkar 2006-10-29 - tema lotterier »

oktober 29, 2006

rcompletion: Tab-komplettering i R

I statistik- och dataanalyspaketet R har det funnits tab-kompletteringar (för kommandoradsvarianten) men endast för filnamn. Länge har jag saknat att kunna tab-komplettera funktionsnamn à la Emacs eller Unix-skal.

I morse - i loggen över icke automatinstallerade paket - hittades paketet rcompletion som gör precis detta. Det är inte bara variabelnamn och funktionsnamn som kompletteras, utan man kan även få fram parametrarna i en funktion. Det sistnämnda känns mycket användbart.


En första not
rcompletion funkar endast för kommandoradsversionen av R och endast på system som har libreadline. Se nedan hur man installerar paketet, jag hade nämligen lite problem med detta.


Några exempel

Vi börjar med att ladda in paketet tseries för att testa lite

> library(tseries)


Så börjar vi vår tab-session, där <TAB> alltså betyder tab-tangentens nedtryckande.


> ari<TAB>

som ger följande förslag:


arima( arima0( arima0.diag( arima.errors( arima.sim(


Varpå vi sedan tabbar inom en funktion, dvs inklusive första parentesen och får listan över funktionens parametrar.

> arima(<TAB>
fixed = kappa = n.cond = seasonal = xreg =
include.mean = method = optim.control = transform.pars =
init = model = order = x =


Nifty!


Mixtrande med installationen av rcompletion (version 0.8) hos mig
Tyvärr så var jag tvungen att mixtra lite för att kunna installera paketet. Anledningen till att det inte gick in vid automat-installationen (via R:s normala install.packages()) var att konfigurationen inte tyckte att min dator har libreadline.so, vilket ju är väldigt felaktigt.

Varpå följande gjordes:

1) ladda ner paketfilen (via paketets sida sida)

2) manuellt packa upp paketfilen i lämplig katalog (tar zxcv paketnamnet)

3) i katalogen som skapades finns filen configure. På ungefär rad 2287 (för version 0.8) finns dessa rader som utan pardon kommenterades bort enligt följande:

# if test $ac_cv_lib_readline_rl_completion_matches = yes; then

PKG_CFLAGS="${PKG_CFLAGS} -DHAVE_LIBREADLINE"
PKG_LIBS="${PKG_LIBS} -lreadline"

#else
#
# { { echo "$as_me:$LINENO: error: readline is required but was n\ ot found" >&5
#echo "$as_me: error: readline is required but was not found" >&2;}
# { (exit 1); exit 1; }; }
# exit 1
#
#fi

dvs raderna med PKG_CFLAGS och PKG_LIBS ska vara kvar.

4) efter detta installerar man paketet manuellt (eventuellt som root om R är så installerat).
R CMD INSTALL paketnamn

5) I R laddar man paketet som vanligt med library(rcompletion)


Paketförfattaren är medveten om att det finns problem och skriver mer här.

Uppdatering torsdag 11 nov 2006
Installationsproblemet ser ut att ha löst sig. Paketet installeras nu helt sömlöst.

Posted by hakank at oktober 29, 2006 06:22 FM Posted to Statistik/data-analys