如何在R中的#
之前提取字符?我的字符串是yet#rt
,我只想提取yet
。 substring
很好,但#
之前的内容有不同的长度,所以我不能在这里使用它。
答案 0 :(得分:4)
您可以使用gsub()
去除#符号及其后的所有内容
x <- c("apple#pie", "banana#split")
gsub("#.*$","", x)
# [1] "apple" "banana"
答案 1 :(得分:3)
在R中,"#"
通常被视为注释字符,因此将数据导入R的若干函数(如scan
和read.table
)具有comment.char
告诉R在遇到该字符后忽略所有内容的参数。
以下是scan
的方法:
my.strings <- c("yet#rt", "blah#rt", "meh#rt")
scan(what = "character", text = my.strings, comment.char = "#")
# Read 3 items
# [1] "yet" "blah" "meh"
答案 2 :(得分:0)
您可以使用strsplit
。怎么样?
strsplit("Good#Bad","#")[[1]][1]
[1] "Good"
答案 3 :(得分:0)
^[^#]*(?=#)
你可以试试这个简单的正则表达式来实现它。
答案 4 :(得分:0)
又一种可能性
library(stringr)
my.string <- "yet#rt"
str_sub(string = my.string, end = str_locate(my.string,"#")[1]-1)
答案 5 :(得分:0)
我维护的 qdap 包中的beg2char
(起始字符)功能就是针对这类事情做的:
library(qdap)
x <- c("apple#pie", "banana#split")
beg2char(x, "#")
## [1] "apple" "banana"
对于其他角色(您询问了一段时间):
x <- c("apple.pie", "banana.split.")
beg2char(x, ".")
## [1] "apple" "banana