Для более новых версий Ubuntu с PHP 7.0 вы можете получить пакет php-mysql
:
sudo apt-get install php-mysql
Затем перезагрузите сервер:
sudo service apache2 restart
Обе эти функции фактически существуют в пакете roxygen
( см. Исходный код здесь ) от Питера Даненберга (изначально был основан на решении Байрона Эллиса в R-Help ):
Curry <- function(FUN,...) {
.orig = list(...);
function(...) do.call(FUN,c(.orig,list(...)))
}
Compose <- function(...) {
fs <- list(...)
function(...) Reduce(function(x, f) f(x),
fs,
...)
}
Обратите внимание на использование функции Reduce
, которая может быть очень полезной при попытке для выполнения функционального программирования на R. См.? Reduce для более подробной информации (которая также охватывает другие функции, такие как Map
и Filter
).
И ваш пример Curry (немного отличается в этом использовании):
> library(roxygen)
> p <- Curry(paste, collapse="")
> p(letters[1:10])
[1] "abcdefghij"
Вот пример, демонстрирующий полезность Compose
(применение трех разных функций к буквам):
> Compose(function(x) x[length(x):1], Curry(paste, collapse=""), toupper)(letters)
[1] "ZYXWVUTSRQPONMLKJIHGFEDCBA"
И ваш последний пример будет работать следующим образом:
> aggregate(df[,"t"], df["l"], Compose(Curry(paste, collapse=""), toupper))
l x
1 1 ABG
2 2 DEFH
3 3 CIJ
Наконец, вот способ сделать то же самое с plyr
(также можно легко сделать с с помощью
или aggregate
, как уже показано):
> library(plyr)
> ddply(df, .(l), function(df) paste(toupper(df[,"t"]), collapse=""))
l V1
1 1 ABG
2 2 DEFH
3 3 CIJ
В пакете roxygen есть функция Curry.
Найдено через этот разговор в архиве R Mail.