小编Pra*_*nna的帖子

用于在Sparklyr(R + spark)中提取列名称的简单命令

在base r中,很容易从数据框中提取列(变量)的名称

> testdf <- data.frame(a1 = rnorm(1e5), a2 = rnorm(1e5), a3 = rnorm(1e5), a4 = rnorm(1e5), a5 = rnorm(1e5), a6 = rnorm(1e5))  
> names(testdf)  
[1] "a1" "a2" "a3" "a4" "a5" "a6"
Run Code Online (Sandbox Code Playgroud)

但是使用Sparklyr时,事情变得更加复杂。复制数据框以生成火花后,

> testdf_tbl <- copy_to(sc, testdf, overwrite = TRUE)  
> names(testdf_tbl)  
[1] "src" "ops"
Run Code Online (Sandbox Code Playgroud)

变量名称实际上位于“ ops”内部

> testdf_tbl$ops$vars  
[1] "a1" "a2" "a3" "a4" "a5" "a6"
Run Code Online (Sandbox Code Playgroud)

如果这一切全部完成,那就没有问题了(也不需要问这个问题)。但是,每次对testdf_tbl进行操作时,列/变量的名称都会更改其位置,如下所示。

> testdf_tbl <- testdf_tbl %>% select(-a1)  
> testdf_tbl$ops$vars  
NULL  
> testdf_tbl$ops$x$vars  
[1] "a1" "a2" "a3" "a4" "a5" "a6"  
Run Code Online (Sandbox Code Playgroud)

另一个操作将另一个$ x添加到路径..依此类推。

> testdf_tbl …
Run Code Online (Sandbox Code Playgroud)

r dplyr apache-spark sparklyr

5
推荐指数
1
解决办法
2022
查看次数

标签 统计

apache-spark ×1

dplyr ×1

r ×1

sparklyr ×1