我有一个经常出现的情况,我在一组R代码的顶部设置了一个值,该代码用于对一个或多个数据帧进行子集化.像这样的东西:
city_code <- "202"
Run Code Online (Sandbox Code Playgroud)
在整个过程结束时,我想将结果保存在一个适当命名的数据框中,比如说,基于将"city_code"附加到公共存根.
city_results <- paste("city_stats", city_code, sep = "")
Run Code Online (Sandbox Code Playgroud)
我的问题是我无法弄清楚如何将结果数据框重命名为'city_results'的值.有很多关于如何重命名数据框列的信息,但没有关于如何重命名数据框本身的信息.基于提出的答案,这里有一个澄清:
谢谢,@迈克明智.有助于学习哈德利的高级R,手头有一个具体的问题.
library(dplyr)
gear_code <- 4
gear_subset <- paste("mtcars_", gear_code, sep = "")
mtcars_subset <- mtcars %>% filter(gear == gear_code)
head(mtcars_subset)
write.csv(mtcars_subset, file = paste(gear_subset, ".csv", sep = ""))
Run Code Online (Sandbox Code Playgroud)
这让我可以将子集写入适当命名的csv文件.但是,您的建议有点可行,但我不能,例如,使用新名称引用data.frame:
assign(gear_subset, mtcars_subset)
head(gear_subset)
Run Code Online (Sandbox Code Playgroud) 当我在帮助搜索框中输入字符串时,RStudio 突然给了我这个错误:
starting httpd help server ...Error in tools::startDynamicHelp() : unable to create socket
Run Code Online (Sandbox Code Playgroud)
当我在控制台上输入以下内容时,我得到了同样的错误:
> ?grep
Run Code Online (Sandbox Code Playgroud)
我已经更新到 RStudio 的当前版本并且正在运行 R 的当前版本。我在 R 本身中尝试了相同的命令,没有问题。
也许巧合的是,当我尝试让 RStudio 更新软件包时,我收到以下消息:
Warning: unable to access index for repository http://cran.rstudio.com/bin/windows/contrib/3.1
Warning: unable to access index for repository http://www.stats.ox.ac.uk/pub/RWin/bin/windows/contrib/3.1
Run Code Online (Sandbox Code Playgroud)
以下是 RStudio 在诊断报告文件中提供的内容:
2014 年 7 月 19 日 17:13:51 [rsession-John Smith] 错误 r 错误 4(R 代码执行错误)[errormsg=工具中的错误::startDynamicHelp():无法创建套接字|||];发生在:核心::错误 r::exec::::evaluateExpressionsUnsafe(SEXPREC*, SEXPREC*, SEXPREC**, r::sexp::Protect*) C:\Users\Administrator\rstudio\src\cpp\r \RExec.cpp:145; 记录自:core::Error session::modules::help::initialize() C:\Users\Administrator\rstudio\src\cpp\session\modules\SessionHelp.cpp:894
我已经卸载了R 和 RStudio,然后重新安装了问题并没有消失。现在,当我启动 RStudio 时,我得到:
Error in tools::startDynamicHelp() : …Run Code Online (Sandbox Code Playgroud) 我需要连接两个表,其中我想要使用的公共列ID在每个表中具有不同的名称.这两个表有一个"false"公共列名,当dplyr采用默认值并加入列"id"时,该名称不起作用.
以下是此问题涉及的一些代码
library(dplyr)
library(RMySQL)
SDB <- src_mysql(host = "localhost", user = "foo", dbname = "bar", password = getPassword())
# Then reference a tbl within that src
administrators <- tbl(SDB, "administrators")
members <- tbl(SDB, "members")
Run Code Online (Sandbox Code Playgroud)
这里有3次尝试 - 都失败了 - 传递成员方的公共列是"id"的信息,而在管理员方面,它是"idmember":
sqlq <- semi_join(members,administrators, by=c("id","idmember"))
sqlq <- inner_join(members,administrators, by= "id.x = idmember.y")
sqlq <- semi_join(members,administrators, by.x = id, by.y = idmember)
Run Code Online (Sandbox Code Playgroud)
这是我得到的各种错误消息的示例:
mysqlExecStatement(conn,statement,...)出错:RS-DBI驱动程序:(无法运行语句:'where子句'中的未知列'_LEFT.idmember')
我在那里看到的例子涉及R侧的数据表和数据帧.我的问题是关于dplyr如何将"by"语句发送到SQL引擎.
我希望这个函数能够对数据框进行子集化并列出不在子集中的行。下面是一个例子:
library(tidyverse)
library(stringr)
arrests <- USArrests %>% rownames_to_column()
list_arrests <- function(criteria) {
arrests %>% filter(str_detect(rowname, criteria))
}
list_arrests("North|South")
list_arrests("New")
Run Code Online (Sandbox Code Playgroud)
我如何重写该函数,以便它列出那些不是的行 "North|South|New"?