我試圖結合dplyr和stringr來檢測數據框中的多個模式。我想使用dplyr,因爲我想測試許多不同的列。用dplyr和stringr檢測多個字符串
下面是一些樣本數據:
test.data <- data.frame(item = c("Apple", "Bear", "Orange", "Pear", "Two Apples"))
fruit <- c("Apple", "Orange", "Pear")
test.data
item
1 Apple
2 Bear
3 Orange
4 Pear
5 Two Apples
我想用是一樣的東西:
test.data <- test.data %>% mutate(is.fruit = str_detect(item, fruit))
和接收
item is.fruit
1 Apple 1
2 Bear 0
3 Orange 1
4 Pear 1
5 Two Apples 1
一個非常簡單的測試工作
> str_detect("Apple", fruit)
[1] TRUE FALSE FALSE
> str_detect("Bear", fruit)
[1] FALSE FALSE FALSE
但我不能得到這個在數據幀的列工作,即使沒有dplyr:
> test.data$is.fruit <- str_detect(test.data$item, fruit)
Error in check_pattern(pattern, string) :
Lengths of string and pattern not compatible
有誰知道如何做到這一點?
這隻適用於有精確匹配的情況,在這種情況下,使用'str_detect'而不是'=='或'in'是多餘的。 – 2017-08-31 15:57:30
啊,你說得對,Alex。我猜,我讀了這個問題有點快。我已經更新了答案。 – Henrik 2017-09-11 13:50:51