1

我必须使用哪种文件编码才能在 R 脚本中正确保存此向量(匹配文本块中的复杂 URL (R) )?特殊字符和中文符号似乎使事情变得复杂。

x <-   c("http://foo.com/blah_blah",
        "http://foo.com/blah_blah/",
        "(Something like http://foo.com/blah_blah)",
        "http://foo.com/blah_blah_(wikipedia)",
         "http://foo.com/more_(than)_one_(parens)",
         "(Something like http://foo.com/blah_blah_(wikipedia))",
         "http://foo.com/blah_(wikipedia)#cite-1",
         "http://foo.com/blah_(wikipedia)_blah#cite-1",
         "http://foo.com/unicode_(✪)_in_parens",
         "http://foo.com/(something)?after=parens",
         "http://foo.com/blah_blah.",
         "http://foo.com/blah_blah/.",
         "<http://foo.com/blah_blah>",
         "<http://foo.com/blah_blah/>",
         "http://foo.com/blah_blah,",
         "http://www.extinguishedscholar.com/wpglob/?p=364.",
         "http://✪df.ws/1234",
         "rdar://1234",
         "rdar:/1234",
         "x-yojimbo-item://6303E4C1-6A6E-45A6-AB9D-3A908F59AE0E",
         "message://%3c330e7f840905021726r6a4ba78dkf1fd71420c1bf6ff@mail.gmail.com%3e",
         "http://➡.ws/䨹",
         "www.c.ws/䨹",
         "<tag>http://example.com</tag>",
         "Just a www.example.com link.",
         "http://example.com/something?with,commas,in,url, but not at end",
         "What about <mailto:gruber@daringfireball.net?subject=TEST> (including brokets).",
         "mailto:name@example.com",
         "bit.ly/foo",
         "“is.gd/foo/”",
         "WWW.EXAMPLE.COM",
         "http://www.asianewsphoto.com/(S(neugxif4twuizg551ywh3f55))/Web_ENG/View_DetailPhoto.aspx?PicId=752",
         "http://www.asianewsphoto.com/(S(neugxif4twuizg551ywh3f55))",
         "http://lcweb2.loc.gov/cgi-bin/query/h?pp/horyd:@field(NUMBER+@band(thc+5a46634))")

我很感激任何帮助。

4

1 回答 1

1

运行你的例子,

source('file.R', encoding="unknown")

可以正常工作并保存为 R 对象并重新加载也可以:

 save(x, file='kk.Rd')
 load('kk.Rd')

您可以获取所有不同的编码iconvlist()并对其进行测试,例如:

vals <- lapply(iconvlist(), function(x)
                      tryCatch(source('file.R', encoding=x),                
                               error=function(e)return(NULL)))

成为你的file.R剧本,然后

iconvlist()[which(!sapply(vals, function(x)is.null(x)))]

为您提供加载时未引发错误的所有编码。

这有帮助吗?

于 2013-04-22T14:53:27.763 回答