我将字符串(?<=k)(",V,")(?=p)
保存在.txt file
的表格中 - 为了简单起见,我们说它位于第1行第1列。我使用file
进行了阅读read.table
quote=""
paste0(file[1,1])
。我想使用"(?<=k)(",V,")(?=p)"
返回字符串"(?<=k)(\",V,\")(?=p)"
。但是,R继续给我file
,在最初来自"(?<=k)(",V,")(?=p)"
的两个引号之前加上反斜杠。我怎样才能从.txt 字面中读取引号?谢谢!
更新:
我在file
中将字符串更改为cat()
,而不是2个原始引号。阅读之后,我遵循了MichaelVE的建议并使用了cat(paste0(file[1,1]))
:
"(?<=k)(",V,")(?=p)"
这确实给了我想要的序列:
gsub
但我不能在{{1}}之类的另一个函数中使用输出,因为它不是字符串 - 实际上我不知道它是什么。有关如何将其转换为可用的东西的任何想法吗?
答案 0 :(得分:2)
这只是R to&#34; read&#34;字符串中的引号。
我相信使用cat(x)可以解决x是你的字符串的问题。这会将您的字符串格式化为&#39;最终用户&#39;格式。
答案 1 :(得分:2)
\"
是&#34;不可打印的&#34;之一?Quotes
中描述的字符。
...反斜杠用于转义字符常量
中的后续字符反斜杠用于在字符常量内启动转义序列。
单引号需要通过单引号字符串中的反斜杠进行转义,并使用双引号字符串中的双引号进行转义
当在字符常量内时,某些字符需要以转义序列开头。
例如,尝试使用嵌入式双引号分配它,然后出现错误
x <- "(?<=k)(",V,")(?=p)"
# Error: unexpected ',' in "x <- "(?<=k)(","
因此,我们可以用单引号引用它,或者转义嵌入的引号。
x <- '(?<=k)(",V,")(?=p)'
x
# [1] "(?<=k)(\",V,\")(?=p)"
现在用于&#34;可用&#34;和可分配的输出,最好使用print()
,因为cat()
返回NULL
。但要注意逃脱仍在那里,你无法摆脱它们。
p <- print(x, quote=FALSE)
# [1] (?<=k)(",V,")(?=p)
p
# [1] "(?<=k)(\",V,\")(?=p)"
答案 2 :(得分:0)
check?read.table for&#39; quote&#39;论点。
报价
引号字符集。要完全禁用引用,请使用quote =&#34;&#34;。请参阅扫描引号中嵌入引号的行为。仅对作为字符读取的列进行引用,除非指定了colClasses,否则它们都是字符。
df <- read.table("myfile.txt",
header = TRUE,
sep = "\t",
stringsAsFactors = FALSE,
quote = "")
df[1,1]
[1] "(?<=k)(\",V,\")(?=p)"
df <- read.table("myfile.txt",
header = TRUE,
sep = "\t",
stringsAsFactors = FALSE,
quote = "\"")
df[1,1]
[1] "(?<=k)(,V,)(?=p)"
df <- read.table("myfile.txt",
header = TRUE,
sep = "\t",
stringsAsFactors = FALSE,
quote = "\"")
dput(df)
structure(list(Filename = c("(?<=k)(,V,)(?=p)", "(?<=k)(,V,)(?=p)",
"(?<=k)(,V,)(?=p)", "(?<=k)(,V,)(?=p)", "(?<=k)(,V,)(?=p)", "(?<=k)(,V,)(?=p)"
)), .Names = "Filename", class = "data.frame", row.names = c(NA,
-6L))
str(df)
'data.frame': 6 obs. of 1 variable:
$ Filename: chr "(?<=k)(,V,)(?=p)" "(?<=k)(,V,)(?=p)" "(?<=k)(,V,)(?=p)" "(?<=k)(,V,)(?=p)" ...
df[1,1]
[1] "(?<=k)(,V,)(?=p)"
str(df[1,1])
chr "(?<=k)(,V,)(?=p)"
gsub("[(\")]", '', df[1,1])
[1] "?<=k,V,?=p"