![](/img/trans.png)
[英]How to take elements of a numeric vector in R, and create a new vector containing seq from 1:(each element)
[英]R - Remove from vector elements containing a number
我有一些以農村屬性命名的文件,如下所示:
v1 <- c("Badger", "Hill", "Farm", "1.json")
v2 <- c("Buffalo", "Pass", "Farm", "2.json")
> v1
[1] "Badger" "Hill" "Farm" "1.json"
> v2
[1] "Buffalo" "Pass" "Farm" "2.json"
我設法拆分了文件名元素,但我只想保留那些不包含任何數字的元素。 所需的 output 將是:
> v1
[1] "Badger" "Hill" "Farm"
> v2
[1] "Buffalo" "Pass" "Farm"
很簡單,但我就是想不通。 我怎樣才能做到這一點?
這應該這樣做:
v1 = v1[!grepl("[0-9]", v1)]
v2 = v2[!grepl("[0-9]", v2)]
grepl
檢測模式,正則表達式模式[0-9]
將檢測任何數字。
"^(?..*({{STRING}}))"
是一個很好的正則表達式指定not
v1 <- c("Badger", "Hill", "Farm", "1.json")
v2 <- c("Buffalo", "Pass", "Farm", "2.json")
grep("^(?!.*(\\d))", v1, value = TRUE, perl = TRUE)
## [1] "Badger" "Hill" "Farm"
grep("^(?!.*(\\d))", v1, value = TRUE, perl = TRUE)
## [1] "Badger" "Hill" "Farm" ```
我們可以使用str_subset
中的stringr
library(stringr)
str_subset(v1, "^\\D+$")
[1] "Badger" "Hill" "Farm"
str_subset(v2, "^\\D+$")
[1] "Buffalo" "Pass" "Farm"
或者在base R
中可以指定invert = TRUE
在grep
> grep("\\d", v1, invert = TRUE, value = TRUE)
[1] "Badger" "Hill" "Farm"
> grep("\\d", v2, invert = TRUE, value = TRUE)
[1] "Buffalo" "Pass" "Farm"
我們可以試試這個
> grep("^\\D+$", v1, value = TRUE)
[1] "Badger" "Hill" "Farm"
> grep("^\\D+$", v2, value = TRUE)
[1] "Buffalo" "Pass" "Farm"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.