以下工作正常:
library(dplyr)
m <- function(df) {
mod <- lm(Sepal.Length ~ Sepal.Width, data = df)
pred <- predict(mod,newdata = df["Sepal.Width"])
data.frame(df,pred)
}
iris %>%
group_by(Species) %>%
do(m(.))
Run Code Online (Sandbox Code Playgroud)
我认为如果我使用匿名函数,这将有效,但它没有:
iris %>%
group_by(Species) %>%
do(function(df) {
mod <- lm(Sepal.Length ~ Sepal.Width, data = df)
pred <- predict(mod,newdata = df["Sepal.Width"])
data.frame(df,pred)
})
Error: Results are not data frames at positions: 1, 2, 3
Run Code Online (Sandbox Code Playgroud) 我正在rvest用来解析一个网站.我正在用这些小小的不间断空间撞墙.如何删除 解析后的html文档中元素创建的空格?
library("rvest")
library("stringr")
minimal <- html("<!doctype html><title>blah</title> <p> foo")
bodytext <- minimal %>%
html_node("body") %>%
html_text
Run Code Online (Sandbox Code Playgroud)
现在我已经提取了正文:
bodytext
[1] " foo"
Run Code Online (Sandbox Code Playgroud)
但是,我无法删除那个讨厌的空白!
str_trim(bodytext)
gsub(pattern = " ", "", bodytext)
Run Code Online (Sandbox Code Playgroud) 当沿着键连接data.frames,并且一个键具有缺失值(NA)时,我的直觉是具有NA键的行在第二个data.frame中应该没有匹配.令我惊讶的是,如果两个data.frame中都有NA,则dplyr将它们匹配,就像它们是值一样.
这是另外令人困惑的,因为详细讨论了dplyr存储库中的问题,请看这里,它似乎已经解决了!如果是这样,我没有看到这是正确的解决方案; 或许我错过了什么
我正在使用dplyr 0.7.4
t1 <- data.frame(a = as.character(c("1", "2", NA, NA, "4", "2")), b = c(1, 2, 3, 3, 4, 5), stringsAsFactors = FALSE)
t2 <- data.frame(a = as.character(c("1", "2", NA)), c = c("b", "n", "i"), stringsAsFactors = FALSE)
library(dplyr)
t1
#> a b
#> 1 1 1
#> 2 2 2
#> 3 <NA> 3
#> 4 <NA> 3
#> 5 4 4
#> 6 2 5
t2
#> a c
#> 1 1 b …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Github访问私有存储库httr.如果我添加我的github令牌(存储为环境变量GITHUB_TOKEN),我可以毫无问题地执行此操作:
httr::GET("https://api.github.com/repos/aammd/miniature-meme/releases/assets/2859674",
httr::write_disk("test.rds", overwrite = TRUE),
httr::progress("down"),
httr::add_headers(Authorization = paste("token", Sys.getenv("GITHUB_TOKEN"))))
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试指定另一个标头,我会收到错误.在这种情况下,我想下载与发布相关联的二进制文件("资产",在github术语中):
httr::GET("https://api.github.com/repos/aammd/miniature-meme/releases/assets/2859674",
httr::write_disk("test.rds", overwrite = TRUE),
httr::progress("down"),
httr::add_headers(Authorization = paste("token", Sys.getenv("GITHUB_TOKEN"))),
httr::add_headers(Accept = "application/octet-stream"))
?xml version="1.0" encoding="UTF-8"?>
<Error><Code>InvalidArgument</Code><Message>Only one auth mechanism allowed; only the X-Amz-Algorithm query parameter, Signature query string parameter or the Authorization header should be specified</Message>
Run Code Online (Sandbox Code Playgroud)
这只是消息的一部分(其余包括我的令牌).
显然我的授权被发送了两次!我怎么能阻止这个?它与...有关httr::handle_pool()
看来原始请求收到一个包含签名的回复.然后将此签名与我的令牌一起发回,从而导致错误.这些人也发生了类似的事情
-> GET /repos/aammd/miniature-meme/releases/assets/2859674 HTTP/1.1
-> Host: api.github.com
-> User-Agent: libcurl/7.43.0 r-curl/2.3 httr/1.2.1.9000
-> Accept-Encoding: gzip, deflate
-> Authorization: …Run Code Online (Sandbox Code Playgroud) 我想将元数据添加到我的电子表格作为评论,然后R忽略这些.
我的数据是形式的
v1,v2,v3,
1,5,7,
4,2,1,#possible error,
Run Code Online (Sandbox Code Playgroud)
(它的例外情况要长得多.第一条评论实际上显示在前5行之外,用于scan确定列数)
我一直在努力:
read.table("data.name",header=TRUE,sep=",",stringsAsFactors=FALSE,comment.char="#")
Run Code Online (Sandbox Code Playgroud)
但是read.table(并且,就此而言count.fields)认为我还有一个比我实际做的更多的领域.我的数据框最后是一个名为"X"的空白列.我认为这是因为我的电子表格程序在每行的末尾都添加了逗号(如上例所示).
使用flush=TRUE没有效果,即使(根据帮助文件)它"[...]允许在最后一个字段后面添加注释[...]"
使用colClasses=c(rep(NA,3),NULL)也没有效果.
我之后可以删除该列,但由于这似乎是一种常见的做法,我想学习如何正确地做到这一点.
谢谢,
安德鲁
我正试图访问一个开放的API httr,并且没有运气.每当我尝试:
httr::GET("https://api.openaq.org/v1/countries")
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Error in curl::curl_fetch_memory(url, handle = handle) :
SSL connect error
Run Code Online (Sandbox Code Playgroud)
但是,例如,与https的其他连接工作正常
httr::GET("https://httpbin.org/get")
Run Code Online (Sandbox Code Playgroud)
这是输出sessionInfo():
R version 3.2.3 (2015-12-10)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 14.04.3 LTS
locale:
[1] LC_CTYPE=en_CA.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_CA.UTF-8 LC_COLLATE=en_CA.UTF-8
[5] LC_MONETARY=en_CA.UTF-8 LC_MESSAGES=en_CA.UTF-8
[7] LC_PAPER=en_CA.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_CA.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods
[7] base
loaded via a namespace (and not attached):
[1] httr_1.0.0.9000 R6_2.1.2 tools_3.2.3 curl_0.9.5
Run Code Online (Sandbox Code Playgroud)
在终点站,如果我跑,curl-config --version我得到
libcurl …Run Code Online (Sandbox Code Playgroud)