在SparkR中使用grep时出错

问题描述 投票:3回答:1

我对Spark DataFrame的子集化存在问题。

我有一个名为DataFramenfe,其中包含一个名为ITEM_PRODUTO的列,其格式为字符串。我想根据项目列是否包含单词“AREIA”来对此DataFrame进行子集化。我可以根据一个确切的短语轻松地对数据进行子集化:

nfe.subset1 <- subset(nfe, nfe$ITEM_PRODUTO == "AREIA LAVADA FINA")

nfe.subset2 <- subset(nfe, nfe$ITEM_PRODUTO %in% "AREIA")

但是,我想要的是ITEM_PRODUTO列中包含单词“AREIA”的所有行的子集。但是,当我尝试使用grep时,我收到一条错误消息:

nfe.subset3 <- subset(nfe, grep("AREIA", nfe$ITEM_PRODUTO))

# Error in as.character.default(x) : 
#  no method for coercing this S4 class to a vector

我已经尝试了多次迭代的语法,并尝试了grepl,但似乎没有任何效果。这可能是一个语法错误,但任何人都可以帮助我吗?

谢谢!

r apache-spark grep sparkr
1个回答
2
投票

标准R函数不能应用于SparkDataFrame。使用像``:

where(nfe, like(nfe$ITEM_PRODUTO, "%AREIA%"))

或者rlike

where(nfe, rlike(nfe$ITEM_PRODUTO, ".*AREIA.*"))
© www.soinside.com 2019 - 2024. All rights reserved.