以下是3行非常大的数据集(数据框名为a
):
1 [~http-bio-26600-exec-98] - Update_Listing_API SellerID
2 [~http-bio-26600-exec-10] - Update_Listing_API SellerID
3 [~http-bio-26600-exec-40] - Update_Listing SellerID
我希望通过这样的子集来获取包含字符串"Update_Listing_API"
的行。我尝试使用grep
函数:
a$v1 <- grep("Update_Listing_API", a$V1, invert = TRUE)
但它给我的错误是:
Error in `$<-.data.frame`(`*tmp*`, "V1", value = c(3L, 5L, 6L, 7L, 8L, :
replacement has 637156 rows, data has 712410
有人可以指出这里的错误吗?我是R的新手,不知道自己做错了什么。提前谢谢。
答案 0 :(得分:1)
这是否实现了目标? (我不确定你是否想要invert
)
a <- a[grep("Update_Listing_API", a$V1, invert = TRUE),]
答案 1 :(得分:0)
我创建了一个示例数据框来重现您的问题:
#example data
data <- data.frame(x1=c("hallo_andi","hello_andi","hello_max","hallo_max"),x2=c("de","en","en","de"))
> data
x1 x2
1 hallo_andi de
2 hello_andi en
3 hello_max en
4 hallo_max de
#subset with specific string
subset(data, grepl("hallo", data[[1]]), drop = TRUE)
x1 x2
1 hallo_andi de
4 hallo_max de
这是否代表您的问题?
在您的情况下,您可以使用:
subset(a, grepl("Update_Listing_API", a[[1]]), drop=TRUE)
答案 2 :(得分:0)
我将假设您的数据如下所示,即一列数据框:
V1
1 [~http-bio-26600-exec-98] - Update_Listing_API SellerID
2 [~http-bio-26600-exec-10] - Update_Listing_API SellerID
3 [~http-bio-26600-exec-40] - Update_Listing SellerID
您的命令grep("Update_Listing_API", a$V1, invert = TRUE)
打印出与“Update_Listing_API”不匹配的索引,因为几分钟前已经注意到的invert=TRUE
参数为Rick。
你想要的是grep("Update_Listing_API", a$V1, invert = FALSE)
。您收到的错误消息告诉您,您试图在较长的原始数据框中放置较短的向量(带有子集索引)。