В базовом г, легко извлекать имена столбцов (переменные) из кадра данныхПростая команды для извлечения имен столбцов в sparklyr (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"
, но при использовании sparklyr, вещи становятся более сложным. После копирования кадра данных СПАРК,
> testdf_tbl <- copy_to(sc, testdf, overwrite = TRUE)
> names(testdf_tbl)
[1] "src" "ops"
имен переменных на самом деле находятся глубоко внутри «OPS»
> testdf_tbl$ops$vars
[1] "a1" "a2" "a3" "a4" "a5" "a6"
и если бы это было все, что не будет никаких проблем (и не нужно спрашивать об этом вопрос). Но, каждый раз, когда операция происходит на 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"
другая операция добавляет еще $ х на путь .. и так далее.
> testdf_tbl <- testdf_tbl %>% select(-a2)
> testdf_tbl$ops$x$vars
NULL
> testdf_tbl$ops$x$x$vars
[1] "a1" "a2" "a3" "a4" "a5" "a6"
В довершение, список переменных не отражает выбирать операции, которые мы сделали, они до сих пор список a1, a2, как имена столбцов. где, как,
> head(testdf_tbl)
Source: query [?? x 4]
Database: spark connection master=local[24] app=sparklyr local=TRUE
a3 a4 a5 a6
dbl dbl dbl dbl
1 -1.146368875 1.691698406 0.43231629 1.3349111
2 0.664928710 -1.332242020 0.05380729 1.0139253
3 1.158095695 -0.097098980 -0.61885204 0.1504693
4 0.001595841 -0.003765908 0.27935192 -0.3039085
5 -0.133446040 0.269329076 1.57210274 1.7762602
6 0.006468698 -1.300439537 0.74057307 0.1320428
так ясно, что выберите операции имели эффект условия, как используется искра dataframe.
SURELY, существует простой, простой способ извлечения текущих имен переменных/столбцов в sparklyr, a la names()
в базе r.
Добро пожаловать в StackOverflow. Пожалуйста, посмотрите на [руководство по форматированию] (http://stackoverflow.com/help/formatting) –
спасибо большое! это намного лучше. – Prasanna
Здесь вы можете использовать 'dplyr :: tbl_vars()'. Поскольку «sparklyr» реализует соединение Spark с интерфейсом «dplyr», подпрограммы, предоставляемые 'dplyr' для этих операций, должны работать так, как вы ожидаете. https://cran.rstudio.com/web/packages/dplyr/vignettes/databases.html также может быть полезно. –