R strsplit不';不要在“上”拆分&引用;?

R strsplit不';不要在“上”拆分&引用;?,r,strsplit,R,Strsplit,我正在编写一个R脚本,并希望定义一个变量,作为文件名的一部分用于打印注释。我想我应该使用strsplit()函数。以下是我的代码和输出: infile = "ACC_1346.table.txt" x = strsplit(infile, ".") class(infile) [1] "character" class(x) [1] "list" str(x) List of 1 $ : chr [1:18] "" "" "" "" ... x[[1]] [1] "" "" "" ""

我正在编写一个R脚本,并希望定义一个变量,作为文件名的一部分用于打印注释。我想我应该使用strsplit()函数。以下是我的代码和输出:

infile = "ACC_1346.table.txt"

x = strsplit(infile, ".")

class(infile)
[1] "character"

class(x)
[1] "list"

str(x)
List of 1
$ : chr [1:18] "" "" "" "" ...

x[[1]]
[1] "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
我预计最终结果是:

[1] "ACC_1346" "table" "txt"

这是怎么回事

strsplit
寻找一个用于执行拆分的方法。在正则表达式中,a是一个通配符,几乎可以匹配任何东西。要实际匹配点,需要使用
\
进行转义。由于
\
也是R中的转义字符,因此需要将其转义为
\\\.

两次。要避免正则表达式被完全使用,请在调用
strsplit时使用
fixed=TRUE

infile = "ACC_1346.table.txt"
x = strsplit(infile, ".", fixed = TRUE)

x

[[1]]
[1] "ACC_1346" "table" "txt"

是一个特殊的角色。在“\\.”上拆分,而不是
?strsplit
,然后查看示例。他们建议在
[.]
cat(例如(strsplit,give.lines=TRUE)[16:21],sep=“\n”)
是您的答案。值得注意的是,这也比执行
\\.
更有效。