priority -20

global !p
import os
from vimsnippets import complete

FIELD_TYPES = [
'character',
'data.frame',
'integer',
'list',
'logical',
'matrix',
'numeric',
'vector']
endglobal

snippet #! "#!/usr/bin/env Rscript" b
#!/usr/bin/env Rscript
$0
endsnippet

snippet setwd "Set workingdir" b
setwd("${1:`!p snip.rv = os.getcwd()`}")
endsnippet

snippet as "Apply type on variable" w
as.$1`!p snip.rv = complete(t[1], FIELD_TYPES)`($2${VISUAL})
endsnippet

snippet is "Test type on variable" w
is.$1`!p snip.rv = complete(t[1], FIELD_TYPES)`($2${VISUAL})
endsnippet

snippet dl "Download and install a package" b
download.file("${1:${VISUAL:url to package}}", destfile = "${2:${1/.*\/(\S*)$/(?1:$1)/ga}}")
install.packages("$2", type = "source", repos = NULL)
library("${3:${2/^(\w+)_.*$/(?1:$1)/ga}}")
endsnippet

snippet lib "Import a library"
library('${0:${VISUAL:package}}')
endsnippet

snippet req "Require a file"
require('${0:${VISUAL:package}}')
endsnippet

snippet source "Source a file"
source('${0:${VISUAL:file}}')
endsnippet

snippet if "If statement"
if ($1) {
	${0:${VISUAL}}
}
endsnippet

snippet eif "Else-If statement"
else if ($1) {
	${0:${VISUAL}}
}
endsnippet

snippet el "Else statement"
else {
	${0:${VISUAL}}
}
endsnippet

snippet ife "if .. else"
if ($1) {
	${2:${VISUAL}}
} else {
	$0
}
endsnippet

snippet wh "while loop"
while($1) {
	${0:${VISUAL}}
}
endsnippet

snippet for "for loop"
for (${1:item} in ${2:list}) {
	${0:${VISUAL}}
}
endsnippet

snippet fun "Function definition"
${1:name} <- function ($2) {
	${0:${VISUAL}}
}
endsnippet

snippet ret "Return call"
return(${0:${VISUAL}})
endsnippet

snippet df "Data frame"
${1:name}[${2:rows}, ${0:cols}]
endsnippet

snippet c "c function"
c(${0:${VISUAL:items}})
endsnippet

snippet li "list function"
list(${0:${VISUAL:items}})
endsnippet

snippet mat "matrix function"
matrix(${1:${VISUAL:data}}, nrow = ${2:rows}, ncol = ${0:cols})
endsnippet

snippet apply "apply function"
apply(${1:${VISUAL:array}}, ${2:margin}, ${0:function})
endsnippet

snippet lapply "lapply function"
lapply(${1:${VISUAL:list}}, ${0:function})
endsnippet

snippet sapply "sapply function"
sapply(${1:${VISUAL:list}}, ${0:function})
endsnippet

snippet vapply "vapply function"
vapply(${1:${VISUAL:list}}, ${2:function}, ${0:type})
endsnippet

snippet mapply "mapply function"
mapply(${1:${VISUAL:function}}, ${0:...})
endsnippet

snippet tapply "tapply function"
tapply(${1:${VISUAL:vector}}, ${2:index}, ${0:function})
endsnippet

snippet rapply "rapply function"
rapply(${1:${VISUAL:list}}, ${0:function})
endsnippet

snippet pl "Plot function"
plot(${1:${VISUAL:x}}, ${0:y})
endsnippet

snippet ggp "ggplot2 plot"
ggplot(${1:${VISUAL:data}}, aes(${0:aesthetics}))
endsnippet

snippet fis "Fisher test"
fisher.test(${1:x}, ${0:y})
endsnippet

snippet chi "Chi Squared test"
chisq.test(${1:x}, ${0:y})
endsnippet

snippet tt "t-test"
t.test(${1:x}, ${0:y})
endsnippet

snippet wil "Wilcox test"
wilcox.test(${1:x}, ${0:y})
endsnippet

snippet cor "Correlation test"
cor.test(${1:x}, ${0:y})
endsnippet

snippet fte "FTE test"
var.test(${1:x}, ${0:y})
endsnippet

snippet kvt "KV test"
kv.test(${1:x}, ${0:y})
endsnippet

#################################
#  easily create string vector  #
#################################
# Given individual words separated by spaces
# Select words (e.g. shift-v for whole line (such as the line above)
# then press <Tab> then type "vec", press <Tab> again to get this:
# var <- c("#","Given","individual","words","separated","by","spaces")
# var <- c("#","type","out","individual","words","separated","by","spaces")
snippet vec
${1:var} <- c("${0:${VISUAL:/ /","/g}}")
endsnippet
