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$ 匹配,但这不需要转义“\”吗?
有没有比这更好的方法
DT <- DT[,!apply(DT,2,function(x) all(is.na(x))), with = FALSE]
Run Code Online (Sandbox Code Playgroud)
仅在未完全用NAs填充的列上对数据表进行子集化?
谢谢
本报网站在单独的<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) 使用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) 我有一个字符串,我想找到重复的字母.例如,
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) 来自: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 函数,我通常使用以下命令从 R 工作室调用它
source("test.R")
test()
Run Code Online (Sandbox Code Playgroud)
这是一项长时间运行的工作,我想在后台运行它,这样即使我注销或关闭 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) 我一直在使用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"或其他东西?).我不一定想要这个具体例子的答案,但学习如何做这个例子将允许我将技能应用于许多其他情况.在此先感谢您的帮助.
我正在尝试使用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,它是矢量.
标题几乎解释了我的困境.但是为了进一步了解,这里有一些额外的信息:将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)
我错过了什么步骤才能在数据框中永久更改?
我编写了一个函数,可以进行一些分析,包括使用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级别将其分解.