0

我需要在 R 中保存带有 write.table 的 data.table。问题是某些值(从 Internet 下载)只有一个“。我不能选择不同的引号字符,就像在 read.table 中一样(我认为这很恶心)。所以我读过关于使用 gsub() 选择所有字段,并添加不同的引号替换它们,最后在 write.table 中使用 quote=F (使用 sep="\t") .

假设这是我的桌子:

field1  field2  field3
valueA  valueB  valueC
valueD  valueE  valueF
valueG  value\"H    valueI

因为值中的 \"\"HI 引用有问题,需要一个不同的引号,一个我确定不会出现在文件中其他任何地方的字符,比如一个汉字。所以,我想用 gsub 制作这个:

乃field1乃    乃field2乃    乃field3乃
乃valueA乃    乃valueB乃    乃valueC乃
乃valueD乃    乃valueE乃    乃valueF乃
乃valueG乃    乃value\"H乃  乃valueI乃

但是如何使用 gsub() 选择所有字段?我找不到正确的正则表达式。提前致谢!

4

2 回答 2

2

你可以试试paste

 df1[] <- lapply(df1, function(x) paste0('乃', x, '乃'))
 df1
 #   field1      field2     field3
 #1 乃valueA乃  乃valueB乃 乃valueC乃
 #2 乃valueD乃  乃valueE乃 乃valueF乃
 #3 乃valueG乃 乃value"H乃 乃valueI乃

数据

 df1 <- structure(list(field1 = c("valueA", "valueD", "valueG"), 
 field2 = c("valueB", 
 "valueE", "value\"H"), field3 = c("valueC", "valueF", "valueI"
 )), .Names = c("field1", "field2", "field3"), row.names = c(NA, 
 -3L), class = "data.frame")
于 2015-06-23T20:50:49.833 回答
0

只是为了完整性(akrun 的版本 viapaste在这里更合适),这是一个使用gsub

df <- read.table(text='field1 field2 field3
                       valueA valueB valueC
                       valueD valueE valueF
                       valueG value\"H valueI')

as.data.frame( lapply(df, function(x) gsub("(.*)","乃\\1乃",x)) )

#          V1          V2        V3
# 1 乃field1乃  乃field2乃 乃field3乃
# 2 乃valueA乃  乃valueB乃 乃valueC乃
# 3 乃valueD乃  乃valueE乃 乃valueF乃
# 4 乃valueG乃 乃value"H乃 乃valueI乃
于 2015-06-23T20:53:42.200 回答