我有一個名稱向量,其中一些名稱具有前導和尾隨.
個字符,而另一些則沒有。這裏有一個例子:有條件地刪除R中前導或尾部的'.`字符
test <- c('.name.1.','name.2','.name.3.')
我想有條件地刪除前導和這些名字尾隨.
字符,使用substr
函數返回
c('name.1','name.2','name.3')
我有一個名稱向量,其中一些名稱具有前導和尾隨.
個字符,而另一些則沒有。這裏有一個例子:有條件地刪除R中前導或尾部的'.`字符
test <- c('.name.1.','name.2','.name.3.')
我想有條件地刪除前導和這些名字尾隨.
字符,使用substr
函數返回
c('name.1','name.2','name.3')
快速功能:
fun1 <- function(x) substr(x, 1 + (1 * as.numeric(substr(x,1,1)=='.')), nchar(x) - (1 * as.numeric(substr(x, nchar(x), nchar(x)) == '.')))
我們使用substr
檢查字符串的第一個和最後一個元素中的.
,然後我們使用substr
再次提取文本的某些部分。例如,如果在第一個字符中有.
,但在第二個字符中不存在,我們將提取:substr(text, 2, nchar(text))
。
fun1(test)
[1] "name.1" "name.2" "name.3"
您還可以使用str_extract
從stringr
:
library(stringr)
str_extract(test, "\\w+\\.\\d")
或str_replace_all
(stringr
換算到gsub
):
str_replace_all(test, "[.](.+)[.]", "\\1")
# [1] "name.1" "name.2" "name.3"
只是爲了好玩,這裏是substring
和grepl
的方法。
substring(test, 1L + grepl("^\\.", test), nchar(test) - grepl("\\.$", test))
[1] "name.1" "name.2" "name.3"
這將工作與substr
更換substring
。關於這些功能的很酷的事情是,它們爲第二和第三個參數提供了載體。在這裏,我們可以使用grepl
爲第二個參數以及最終字符的位置和倒數第二個字符之間的1L和2L之間遞增。