Sparklyr: como centralizar uma tabela Spark com base na coluna?

Eu tenho uma tabela Spark:

simx
x0: num 1.00 2.00 3.00 ...
x1: num 2.00 3.00 4.00 ...
...
x788: num 2.00 3.00 4.00 ...

e um identificador chamadosimX_tbl no ambiente R que está conectado a estesimx mesa.

Eu quero fazer uma centralização para esta tabela, que está subtraindo cada coluna com seus meios de coluna. Por exemplo, calculandox0 - mean(x0), e assim por diante.

Até agora, meu melhor esforço é:

meanX <- simX_tbl %>% summarise_all(funs("mean")) %>% collect()

x_centered <-  simX_tbl

for(i in 1:789) {
  colName <- paste0("x", i-1)
  colName2 <- lazyeval::interp(~ a - b, a = as.name(colName), b = as.double(meanX[i]))
  x_centered <- x_centered %>% mutate_(.dots = setNames( list(colName2) , colName) )
}

Isso realmente funciona quando eu limite ofor loop para poucas iterações (1:5) ax_centered %>% head resultado está correto. Mas quando faço isso para 789 iterações, esse erro ocorre quando tentohead isto:

Error: C stack usage  7969412 is too close to the limit

Abaixo estão os métodos de saída que eu já tentei que mostram o erro de uso da pilha C:

x_centered %>% head #show first 6 rows

x_centered %>% select_("x0") #select first column only

x_centered %>% sdf_register("x_centered") #register as table

x_centered %>% spark_dataframe() %>% tbl(sc, "x_centered") #also register as table

spark_write_csv(x_centered, path = "hdfs/path/here") #write as csv

Posteriormente, preciso calcular o coeficiente de correlação para cada coluna, mas não acho que possa gerar esse erro.

Existe alguma maneira de fazer isso centralizando corretamente / eficientemente? Eu liessa questão sobre aumentar o limite de Cstack, mas não acho que seja uma solução, porque os dados são muito grandes e existe o risco de superlimitar novamente com dados maiores. Os dados reais têm mais de 40 GB e os dados que estou usando atualmente são apenas uma pequena amostra (789 colunas x 10.000 linhas).

A versão do Spark é 1.6.0

EDIT: torne o título mais claro, adicione métodos de saída testados

questionAnswers(1)

yourAnswerToTheQuestion