首页 > 解决方案 > 使用 Sparklyr 在 R 中选择 N 行

问题描述

我正在尝试使用 Sparklyr 选择不同的 SparkDataframe 中间行。

我一直在寻找它,但我没有找到它(只有头部尾部功能,但我不想要这些)。是否有一个 sparklyr 函数可以与传统 R 处理数据帧的维度一样?我需要创建一个带有 n:m 行 SparkDataframe 的 R 数据框。

例如,如果 n=1 且 m=5:

传统的 R

data(iris)

iris2 <- iris[1 : 5, ]

Sparklyr

sc <- spark_connect(master = "local")
iris_tbl <- sdf_copy_to(sc, iris, name = "iris", overwrite = TRUE)

提示:我正在查看slice(),但在编写代码时出现错误:

iris2 <- iris_tbl %>% slice(1:5) %>% collect()

no applicable method for 'slice' applied to an object of class "c('tbl_spark', 'tbl_sql', 'tbl_lazy', 'tbl')"

谢谢!

标签: rsparklyr

解决方案


做一个索引列,然后过滤掉上下索引。因此,如果我想保持 5:7,我会这样做:

iris_tbl <- sdf_copy_to(sc, iris, name = "iris", overwrite = TRUE) %>%
  sdf_with_sequential_id(id = "index") %>%
  filter(5<=index, index<=7)

希望这可以帮助


推荐阅读