如果您最终尝试通过唯一值列表过滤 spark DataFrame,您可以使用 merge 操作来完成此操作。如果您正在谈论从长数据格式到宽数据格式,您需要确保您正在考虑的因子变量的每个“级别”都有相同数量的观察值。如果您想按列对 Spark 数据框进行子集化,您还可以使用 select 语句,或者通过将 data$blah 粘贴到中来构建一个 select 语句,然后按照@Wannes 的建议执行eval(parse(text=bigTextObject))。也许您想要一个生成大 select 语句的函数(如果您按列名过滤)......如果您尝试从单个列中提取值,那么 merge 就是您想要的。
据我了解,您似乎想要采用包含大量列的大型 Spark DataFrame,并且只采用您感兴趣的那些,如您的问题中的list 所示。
这里有一个小函数来生成 sparkselect 语句:
list<- c(1,2,5,8,90,200)
listWithDataPrePended<- paste0('data', '$', list)
gettingCloser<- noquote(paste0(listWithDataPrePended, collapse = ','))
finalSelectStatement<- noquote(paste("select(data,", gettingCloser, ")"))
finalData<- eval(parse(text=finalSelectStatement))
finalData<- SparkR::collect(finalData)
也许这就是你要找的……也许不是。尽管如此,我希望它会有所帮助。
祝你好运,
纳特