Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将R中的“粘贴”函数矢量化?_R_Text_Concatenation_Vectorization - Fatal编程技术网

如何将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,但在搜索数百行代码之前,请确保这不是您的过程。