使用`dplyr :: mutate()`在`sparklyr :: spark_apply()`中的colnames

时间:2018-03-13 14:46:53

标签: r dplyr sparklyr

假设{your_dropzone}.removeThumbnail(); 是现有的spark(lyr)连接,sc中给出的名称将被忽略:

dplyr::mutate()

解决方法是使用iris_tbl <- sdf_copy_to(sc, iris) iris_tbl %>% spark_apply(function(e){ library(dplyr) e %>% mutate(slm = median(Sepal_Length)) }) ## Source: table<sparklyr_tmp_60a41ac01b4e> [?? x 6] ## Database: spark_connection # Sepal_Length Sepal_Width Petal_Length Petal_Width Species X6 # <dbl> <dbl> <dbl> <dbl> <chr> <dbl> # 1 5.1 3.5 1.4 0.2 setosa 5.8 # 2 4.9 3.0 1.4 0.2 setosa 5.8 # 3 4.7 3.2 1.3 0.2 setosa 5.8 # ... 参数提供名称:

columns

这是一个错误吗?

此处为iris_tbl %>% spark_apply(function(e){ library(dplyr) e %>% mutate(slm = median(Sepal_Length)) }, columns = c(colnames(iris), "slm")) ## Source: table<sparklyr_tmp_60a4126692e7> [?? x 6] ## Database: spark_connection # Sepal.Length Sepal.Width Petal.Length Petal.Width Species slm # <dbl> <dbl> <dbl> <dbl> <chr> <dbl> # 1 5.1 3.5 1.4 0.2 setosa 5.8 # 2 4.9 3.0 1.4 0.2 setosa 5.8 # 3 4.7 3.2 1.3 0.2 setosa 5.8 # ...

sessionInfo()

我知道,它是一个旧的R版本,但那不是我的意思......

1 个答案:

答案 0 :(得分:0)

这就是它的设计方式。 This链接指出:

默认情况下,spark_apply()从输入Spark数据框中派生列名。使用names参数重命名或添加新列。

trees_tbl %>%
  spark_apply(
              function(e) data.frame(2.54 * e$Girth, e),
              names = c("Girth(cm)", colnames(trees)))