小编ali*_*ire的帖子

str_detect 查找以字符开头并以字符结尾的单词

library(stringr)

words <- c("proposition", "proper", "poor", "paul", "park", "car")
words[str_detect(words, "^p")]
[1] "proposition" "proper" "poor" "paul" "park"
words[str_detect(words, "r$")]
[1] "proper" "poor" "car"
Run Code Online (Sandbox Code Playgroud)

我已经大大缩减了作业的数据。

我想检测以 p 开头并以 r 结尾的单词。我期待结果是正确的和糟糕的。我现在正在为一项作业花费几个小时来解决这个问题。

words[str_detect(words, "[^p][r$]")]
Run Code Online (Sandbox Code Playgroud)

无论位置如何,都会得出单词中带有 p 和 r 的任何内容。

words[str_detect(words, "^pr$")]
Run Code Online (Sandbox Code Playgroud)

这东西直接说是不行的。它不匹配任何内容,但没有抛出错误。我不明白为什么它不会抛出错误。我首先认为它与单词 ^pr$ 匹配,但这不需要转义“\”吗?

regex r stringr

1
推荐指数
1
解决办法
9138
查看次数

使用数据表删除仅包含 NA 的列

有没有比这更好的方法

DT <- DT[,!apply(DT,2,function(x) all(is.na(x))), with = FALSE]
Run Code Online (Sandbox Code Playgroud)

仅在未完全用NAs填充的列上对数据表进行子集化?

谢谢

r data.table

1
推荐指数
1
解决办法
148
查看次数

根据特定模式刮取多个段落

本报网站在单独的<p>对象中列出了其文章的段落,其中每个<class>属性的名称以文章一词开头.

如何从tz2对象获取<class>属性以文章开头的所有段落?

require(rvest)

url = 'http://taz.de/Kongo-Kunst-im-Bruesseler-Afrikamuseum/!5563620/'

tz = read_html(url)

tz2 = tz %>% 
  xml_nodes(xpath = "//*[@class='sectbody']") %>% 
  xml_children()
Run Code Online (Sandbox Code Playgroud)

我的尝试:

# get one paragraph by class attribute
tz2 %>% 
  xml_nodes(xpath = "//p[@class='article first odd Initial']") %>% 
  xml_text()

# regex-like get all 'article' paragraphs
tz2 %>% 
  xml_nodes(xpath = "//p[@starts-with(@class, 'article')]") %>% 
  xml_text()
Run Code Online (Sandbox Code Playgroud)

xpath r html-parsing web-scraping rvest

1
推荐指数
1
解决办法
58
查看次数

计数功能错误(错误的结果大小)

使用count今天介绍的功能,我遇到了一个奇怪的问题.当我输入:

a <- count(data, c("col1", "col2")
Run Code Online (Sandbox Code Playgroud)

错误弹出

错误:结果大小错误

之前这段代码运行正常.任何帮助将不胜感激.

e.g data <- matrix((1,2,1,2,1,3,1,3,2,3,2,4,2,3,2,5), nrow=8, ncol=2)
Run Code Online (Sandbox Code Playgroud)

r count dplyr

0
推荐指数
1
解决办法
3623
查看次数

在字符串中查找重复的字母

我有一个字符串,我想找到重复的字母.例如,

A <- c('A-B-A-B-C', 'A-B-C-D', 'A-B-A-C-D-E-F', 'A-B-A-B')
Run Code Online (Sandbox Code Playgroud)

我想创建一个向量B,如果没有重复的字母,则取值为0,否则为1.

B <- c('1','0','1','1')
Run Code Online (Sandbox Code Playgroud)

regex r

0
推荐指数
1
解决办法
106
查看次数

purrr map2(x,y,fun),但对于X的每个元素,请执行y的所有元素

来自:https://www.rdocumentation.org/packages/purrr/versions/0.2.2/topics/map2 我们看到:

x <- list(1, 10, 100)
y <- list(1, 2, 3)
map2(x, y, ~ .x + .y)
Run Code Online (Sandbox Code Playgroud)

生成

2, 12, 103
Run Code Online (Sandbox Code Playgroud)

但如果需要的是:

2, 3, 4, 11, 12, 13, 101, 102, 103
Run Code Online (Sandbox Code Playgroud)

即:为每个x[i]添加所有成员y[*]

对于循环来说似乎很简单,但是......我显然在purrr中遗漏了一些明显的东西.

r purrr

0
推荐指数
1
解决办法
233
查看次数

在后台运行 R 函数

您好,我有 R 函数,我通常使用以下命令从 R 工作室调用它

source("test.R")

test()
Run Code Online (Sandbox Code Playgroud)

这是一项长时间运行的工作,我想在后台运行它,这样即使我注销或关闭 R 工作室,它仍然会运行。

请告诉我如何实现这一目标。

r

0
推荐指数
1
解决办法
2269
查看次数

如何为 R 中分布曲线下的区域着色

让我们开始说:

x <- seq(0, 1, 0.01)
y <- dbeta(x, 2, 5)
plot(x, y, type = "l")
Run Code Online (Sandbox Code Playgroud)

现在假设我想为 0.5 到 4.5 之间的区域着色,如下所示:

在此处输入图片说明

我该怎么做?

我通过以下行破解了它

sapply(seq(0.05, 0.35, 0.01), function(x) lines(c(x, x), c(0, dbeta(x, 2, 5)), col = "yellow", lwd = 4))
Run Code Online (Sandbox Code Playgroud)

r

0
推荐指数
1
解决办法
1528
查看次数

Web刮几天的表

我一直在使用webscraping XML::readHTMLTable,现在我正在努力学习如何在更细微的层面上进行搜索.我的动机来自于尝试在多个日子里在网站上刮一张桌子来改变位置(例如,昨天它是页面上的第4个表格,今天它是页面上的第2个表格,等等).我将使用一个以各种体育赛事发布维加斯赔率的网站为例,我将特别试图提取NBA数据.

URL1 = "http://www.scoresandodds.com/grid_20161123.html"
URL2 = "http://www.scoresandodds.com/grid_20161125.html"
Run Code Online (Sandbox Code Playgroud)

你会注意到NBA桌子是第一张桌子URL1,它是第二张桌子URL2.认识到NBA是第一个表格,以下是我如何将其作为第一个网址:

library(XML)

URL1 = "http://www.scoresandodds.com/grid_20161123.html"
exTable = readHTMLTable(URL1)[[1]] %>%
# Find first blank, since NBA is the first table #
  head(which(exTable[,1] == "")[1] - 1)
Run Code Online (Sandbox Code Playgroud)

然后我会从那里清理它.我知道这不是最好的方法,甚至考虑到我想要循环多天,因为需要进行所有的清洁.学习如何抓取网页表中的特定对象会更好.

我已经玩了rvest一些,我知道我可以为Vegas线获得看起来像"td.line"的节点,但是我试图选择特定表格的节点(css = "#nba > div.sport"或其他东西?).我不一定想要这个具体例子的答案,但学习如何做这个例子将允许我将技能应用于许多其他情况.在此先感谢您的帮助.

r css-selectors html-parsing web-scraping rvest

0
推荐指数
1
解决办法
105
查看次数

带矢量输入的Dplyr条件列ifelse

我正在尝试使用dplyr的新NSE语言方法来创建条件变异,使用矢量输入.我遇到麻烦的地方是将列设置为等于它自己,请参见下面的mwe:

df <- data.frame("Name" = c(rep("A", 3), rep("B", 3), rep("C", 4)), 
                 "X" = runif(1:10), 
                 "Y" = runif(1:10)) %>% 
    tbl_df() %>% 
    mutate_if(is.factor, as.character)

ColToChange <- "Name"
ToChangeTo <- "Big"
Run Code Online (Sandbox Code Playgroud)

现在,使用以下内容:

df %>% mutate( !!ColToChange := ifelse(X >= 0.5 & Y >= 0.5, ToChangeTo, !!ColToChange))
Run Code Online (Sandbox Code Playgroud)

ColToChange值设置为Name,而不是回到其原始值.我因此尝试使用上面的语法来实现这一点:

df %>% mutate( !!ColToChange := ifelse(X >= 0.5 & Y >= 0.5, ToChangeTo, Name))
Run Code Online (Sandbox Code Playgroud)

但不是Name,它是矢量.

r dplyr nse rlang

0
推荐指数
1
解决办法
387
查看次数

在R中,当我使用as.factor将变量从INT更改为Factor时,它仍然在str()中显示"int"

标题几乎解释了我的困境.但是为了进一步了解,这里有一些额外的信息:将INT转换为因子的代码是:

x<-as.factor(dataset$x)
Run Code Online (Sandbox Code Playgroud)

在"全局环境"窗口中,它显示为

x    Factor w/ 2 levles "0","1"...
Run Code Online (Sandbox Code Playgroud)

但是当运行str()命令时,它仍显示为

x:int 0 0 0 0 ..."
Run Code Online (Sandbox Code Playgroud)

我错过了什么步骤才能在数据框中永久更改?

variables r type-conversion dataframe

0
推荐指数
1
解决办法
65
查看次数

如何将列名传递给函数

我编写了一个函数,可以进行一些分析,包括使用NPS计算一个名为"Net Promoter Score"的度量.

library(dplyr)
library(tidyr)
library(NPS)
df<-data.frame(score = sample(c(0:10),15,replace=TRUE),
           variable = sample(c('A', 'B', 'C'),15,replace=TRUE)
)
analyzer <- function(df,var, sco){
    df %>% group_by_(var) %>% transmute(n= nps(sco)) %>% unique()
}
analyzer(df,'variable','score')
Run Code Online (Sandbox Code Playgroud)

这将返回NA所有级别的变量.

现在dplyr函数有一种处理x作为字符传递给它们的方法(即,_我在这里使用它们的版本),但nps函数没有.我也试过通过得分列,nps(.[[score]])但这会返回整列的NPS,并且不会按group_by级别将其分解.

r function dplyr rlang

0
推荐指数
1
解决办法
76
查看次数