我试图更改其类为tbl_spark的数据的所有列名称

时间:2017-05-01 10:53:32

标签: r sparklyr

以下是代码:

    library(sparklyr)
    sc <- spark_connect(master = "local", config = list())
    iris_tbl <- copy_to(sc, iris, overwrite = T)
    newColList <- c("a", "b" , "c" , "d" , " e")
    colnames(iris_tbl) <- newColList 

错误:

  

colnames中的错误&lt; - (tmp,value = c(“a”,“b”,“c”,“d”,“   e“)):'dimnames'应用于非数组

2 个答案:

答案 0 :(得分:0)

names(iris_tbl) <- newColList有效,但我认为更好的答案会使用%>%dplyr::rename

答案 1 :(得分:0)

我整天都在寻找这个。现在我最好的解决方案是创建一个直接指向Spark API的自定义函数:

sdf_write_colnames <- function(in_tbl, new_names) {

  sdf_name <- as.character(in_tbl$ops$x)

  in_tbl %>%
    spark_dataframe() %>%
    invoke("toDF", as.list(new_names)) %>%
    sdf_register(name = sdf_name)
}

iris_tbl <- sdf_write_colnames(iris_tbl, c("a", "b", "c", "d", "e"))

head(iris_tbl)

通过一些努力,可以使其更像colnames() <-