功能是否与正则表达式匹配,我想使用匹配的值来填充新功能,否则NA。
我发现了this帖子并尝试使用答案来解决我的问题。
library(dplyr)
library(stringr)
dat.p <- dat.p %>%
mutate(
cad = ifelse(str_locate(text_field, "\\[[^]]*\\]"),
str_extract(text_field, "\\[[^]]*\\]"),
NA)
)
如果text_field中的正则表达式\\[[^]]*\\]
匹配,则在新列cad中使用该值,否则使用cad NA的值。
当我运行它时,我收到错误:
Error: wrong result size (1000000), expected 500000 or 1
我该怎么做?
一些示例数据:
df <- data.frame(
id = 1:2,
sometext = c("[cad] apples", "bannanas")
)
df.desired <- data.frame(
id = 1:2,
sometext = c("[cad] apples", "bannanas"),
cad = c("[cad]", NA)
)
答案 0 :(得分:3)
我不知道你为什么要使用mutate和ifelse来使用str_extract
如果它不提取任何内容时> df$cad = str_extract(df$sometext,"\\[[^]]*\\]")
> df
id sometext cad
1 1 [cad] apples [cad]
2 2 bannanas <NA>
会给你一个NA的事实呢?
> str_locate(df$sometext,"\\[[^]]*\\]")
start end
[1,] 1 5
[2,] NA NA
您可以通过单独尝试表达式并查看发生的情况来调试R.例如,ifelse的第一个元素是:
ifelse
显然无法作为2017-07-14 09:09:19.285 App[23194:15302685] GoogleTagManager info: Loading container: GTM-XXX
2017-07-14 09:09:19.286 App[23194:15302665] GoogleTagManager info: Attempting to load saved version of container GTM-XXX
2017-07-14 09:09:19.310 App[23194:15302665] GoogleTagManager info: Processing logged event: gtm.load with parameters: (null)
2017-07-14 09:09:19.324 App[23194:15302665] GoogleTagManager info: Sending universal analytics hit: {
"&t" = screenview;
"&tid" = "UA-000000-1";
}
[...]
的第一个参数。那你为什么认为呢?
答案 1 :(得分:2)
> df$cad <- regmatches(df$sometext, gregexpr("\\[[^]]*\\]", df$sometext))
> df
id sometext cad
1 1 [cad] apples [cad]
2 2 bannanas