如何将R中的“粘贴”函数矢量化?
假设我有一个字符串(行)向量,我使用如何将R中的“粘贴”函数矢量化?,r,text,concatenation,vectorization,R,Text,Concatenation,Vectorization,假设我有一个字符串(行)向量,我使用readLines从.txt网页中抓取。有些行将以“开头,如果您试图分离HTML节点,最好使用理解HTML的函数。这样做的好处是您不需要手动查找开始和结束标记 # read in data lines <- c("<P> sampletextsampletext", "sampletextsampletext</P>" , "<P> sampletext",
readLines
从.txt网页中抓取。有些行将以“开头,如果您试图分离HTML节点,最好使用理解HTML的函数。这样做的好处是您不需要手动查找开始和结束标记
# read in data
lines <- c("<P> sampletextsampletext",
"sampletextsampletext</P>" ,
"<P> sampletext",
"sampletext",
"sampletext</P>",
"<P> sampletext </P>")
# load a simple HTML scraping/parsing package
library(rvest)
# find all `<p>` tags and their contents
lines %>% paste(collapse = '') %>% read_html() %>% html_nodes('p')
# {xml_nodeset (3)}
# [1] <p> sampletextsampletextsampletextsampletext</p>
# [2] <p> sampletextsampletextsampletext</p>
# [3] <p> sampletext </p>
#读入数据
行%paste(collapse='')%%>%read\u html()%%>%html\u节点('p')
#{xml_nodeset(3)}
#[1]sampletextsampletextsampletextsampletext
#[2]sampletextsampletextsampletext
#[3]样本文本
如果您试图分离HTML节点,最好使用理解HTML的函数。这样做的好处是不需要手动查找开始和结束标记
# read in data
lines <- c("<P> sampletextsampletext",
"sampletextsampletext</P>" ,
"<P> sampletext",
"sampletext",
"sampletext</P>",
"<P> sampletext </P>")
# load a simple HTML scraping/parsing package
library(rvest)
# find all `<p>` tags and their contents
lines %>% paste(collapse = '') %>% read_html() %>% html_nodes('p')
# {xml_nodeset (3)}
# [1] <p> sampletextsampletextsampletextsampletext</p>
# [2] <p> sampletextsampletextsampletext</p>
# [3] <p> sampletext </p>
#读入数据
行%paste(collapse='')%%>%read\u html()%%>%html\u节点('p')
#{xml_nodeset(3)}
#[1]sampletextsampletextsampletextsampletext
#[2]sampletextsampletextsampletext
#[3]样本文本
这是一个基本的R解决方案。两个grep操作将段落的起始行和停止行传递给mappy
管理的函数,以便将它们与粘贴一起折叠:
> txt <- scan(what="")
1: "<P> sampletextsampletext"
2: "sampletextsampletext</P>"
3: "<P> sampletext"
4: "sampletext"
5: "sampletext</P>"
6: "<P> sampletext </P>"
7:
Read 6 items
> grep("<P>", txt)
[1] 1 3 6
> grep("</P>", txt)
[1] 2 5 6
> mapply( function(x,y) paste( txt[x:y], collapse=" "), grep("<P>", txt), grep("</P>", txt) )
[1] "<P> sampletextsampletext sampletextsampletext</P>"
[2] "<P> sampletext sampletext sampletext</P>"
[3] "<P> sampletext </P>"
>txt grep(“”,txt)
[1] 1 3 6
>grep(“
”,txt)
[1] 2 5 6
>mapply(函数(x,y)粘贴(txt[x:y],collapse=”“),grep(“”,txt),grep(“
”,txt))
[1] “sampletextsampletext sampletextsampletext
”
[2] “sampletext sampletext sampletext
”
[3] “sampletext
”
这是一个基本的R解决方案。两个grep操作将段落的起始行和停止行传递给mappy
管理的函数,以便将它们与粘贴一起折叠:
> txt <- scan(what="")
1: "<P> sampletextsampletext"
2: "sampletextsampletext</P>"
3: "<P> sampletext"
4: "sampletext"
5: "sampletext</P>"
6: "<P> sampletext </P>"
7:
Read 6 items
> grep("<P>", txt)
[1] 1 3 6
> grep("</P>", txt)
[1] 2 5 6
> mapply( function(x,y) paste( txt[x:y], collapse=" "), grep("<P>", txt), grep("</P>", txt) )
[1] "<P> sampletextsampletext sampletextsampletext</P>"
[2] "<P> sampletext sampletext sampletext</P>"
[3] "<P> sampletext </P>"
>txt grep(“”,txt)
[1] 1 3 6
>grep(“
”,txt)
[1] 2 5 6
>mapply(函数(x,y)粘贴(txt[x:y],collapse=”“),grep(“”,txt),grep(“
”,txt))
[1] “sampletextsampletext sampletextsampletext
”
[2] “sampletext sampletext sampletext
”
[3] “sampletext
”
请提供您的数据样本。仅从描述中,您的问题并不十分清楚。您必须理解,问“如何向量化粘贴()”对R人员来说听起来很奇怪,因为粘贴()是向量化的。也许您只是在寻找collapse
参数?在我看来,您好像有几行(1:3、4:4、5:9)您需要知道如何使用collapse
参数将paste
应用到每个组。dplyr
或数据。table
是您的朋友,不过aggregate
可能会很好。如果您与dput()共享示例数据,那么它可以复制/粘贴,也可以与dput()共享
你的索引列表,当然,我会看一看。我真的不喜欢数据输入,所以你必须为我做准备工作。你为什么还要这样做呢?这是html。paste0(x,collapse='')
请包括你的数据样本。你的问题单从描述上看不是很清楚。你必须理解这一点。”“如何向量化粘贴()”对于R用户来说听起来很奇怪,因为粘贴()是向量化的。也许您只是在寻找collapse
参数?在我看来,您好像有一组行(1:3、4:4、5:9)您需要知道如何使用collapse
参数将paste
应用到每个组。dplyr
或数据。table
是您的朋友,不过aggregate
可能会很好。如果您与dput()共享示例数据,那么它可以复制/粘贴,也可以与dput()共享
你的索引列表,当然,我会看一看。我真的不喜欢数据输入,所以你必须为我做准备工作。你为什么还要这样做?这是html..paste0(x,collapse='')
谢谢您的回答!我最初使用的是rvest,但遇到了一些困难。我想我只是不知道如何正确使用它。当我在数据上尝试此方法时,出现了错误错误:名称d:2qwt与XML命名空间不兼容[202]
。您以前见过类似的内容吗?如果没有看到相关的数据部分,我真的无能为力,但实际上,readLines
是导入HTML的一种不好的方法,这可能是问题所在。相反,请传递read\u HTML()
直接以HTML格式读取数据的URL或文件路径。这可能只是格式不正确的HTML,但在搜索数百行代码之前,请确保这不是您的过程。谢谢您的回答!我最初使用的是rvest,但遇到了困难。我想我只是不知道如何正确使用它。当我在我的数据上尝试这种方法时,我得到了一个错误:error:Name d:2qwt不符合XML命名空间[202]
。你以前见过类似的情况吗?如果没有看到数据的相关部分,我真的帮不上忙,但实际上,readLines
是导入HTML的一种不好的方法,这可能是问题所在。相反,请传递read\u HTML()
直接以HTML格式读取数据的URL或文件路径。这可能只是格式不正确的HTML,但在搜索数百行代码之前,请确保这不是您的过程。