帮助页面randomforest::randomforest()说:
"classwt - 类的推荐.不需要加一个.忽略回归."
classwt当您有大量不平衡数据时,可以设置参数帮助,即.班级的先辈们有很大的不同?
如何classwt在具有3个类的数据集上训练模型时,如果先验矢量等于(p1,p2,p3),并且在测试集先验中是(q1,q2,q3)?
我正在使用R创建一个包,我也希望包含一个R Markdown文件.这个RMarkdown模板包含我的包中的函数,并通过knitr呈现给html文档.
目标是定期运行一个函数(通过cronjob),该函数呈现RMarkdown文件以生成每周报告.
如何将这些文件添加到R包(如.Rmd)并在进行函数调用时引用.Rmd来呈现所述模板?
使用旧select_()函数,我可以将命名向量传递给select并立即更改位置和列名:
my_data <- data_frame(foo = 0:10, bar = 10:20, meh = 20:30)
my_newnames <- c("newbar" = "bar", "newfoo" = "foo")
move_stuff <- function(df, newnames) {
select_(df, .dots = newnames)
}
move_stuff(my_data, newnames = my_newnames) )
# this is the desired output
# A tibble: 4 x 2
newbar newfoo
<int> <int>
1 10 0
2 11 1
3 12 2
4 13 3
Run Code Online (Sandbox Code Playgroud)
我尝试使用quosures和拼接做类似的事情 - 选择列效果很好,但是矢量的名称(因此同时重命名列)似乎被忽略了.以下两个都返回数据框,列中包含名称bar和foo,但不是newbar和newfoo:
move_stuff2 <- function(df, newnames) …Run Code Online (Sandbox Code Playgroud) 有没有办法使用 dplyr 的连接运算符连接两个数据帧,但使用正则表达式而不是直接 by=c('foo' = 'bar') ?
就像是:
people <- data.frame(
id = 1:10
, emp = c("Caterpillar", "FEMA", "Community Hospital", "Gessert Grp.", "AT&T", "IBM Corp.", NA, "Smartguy Community College", NA, NA))
employers <- data.frame(
employerID = c(1, 2, 3, 4, 5)
, employerName = c("Caterpillar Foundation", "Eli Lilly and Company Foundation Inc.", "Archer Daniels Midland Co", "IBM Corporation", "State Farm Co. Foundation Matching Gifts")
, employerRegexp = c("Caterpillar", "El *Lilly", "Archer *Daniels|ADM", "IBM", "State *Farm")
)
peoplewRealEmployerNames <- people …Run Code Online (Sandbox Code Playgroud) 当我比较 中的列时,为什么要使用|vs ?any()dplyr::mutate()
为什么他们返回不同的答案?
例如:
library(tidyverse)
df <- data_frame(x = rep(c(T,F,T), 4), y = rep(c(T,F,T, F), 3), allF = F, allT = T)
df %>%
mutate(
withpipe = x | y # returns expected results by row
, usingany = any(c(x,y)) # returns TRUE for every row
)
Run Code Online (Sandbox Code Playgroud)
这里发生了什么,为什么我应该使用一种方法来比较另一种值?
在运行R数据帧的dplyr中,它很容易运行
df <- df %>%
mutate(income_topcoded = ifelse(income > topcode, income, topcode)
Run Code Online (Sandbox Code Playgroud)
我现在正在使用大型SQL数据库,使用dplyr将命令发送到SQL服务器.当我运行相同的命令时,我会回来
Error in postgresqlExecStatement(conn, statement, ...) :
RS-DBI driver: (could not Retrieve the result : ERROR:
function ifelse (boolean, numeric, numeric) does not exist
HINT: No function matches the given name and argument types. You may need to add explicit type casts.
Run Code Online (Sandbox Code Playgroud)
你会如何建议实施ifelse()声明?我对PivotalR中的东西很好(这似乎支持ifelse(),但我不知道如何将它与dplyr集成,并且在SO上找不到任何示例),我可以在线使用的一些SQL语法在这里,或者dplyr的一些我不知道的特征.
(我有同样的问题,我想grepl()用作in-db操作,但我不知道该怎么做.)
我知道magrittr::inset()应该能够将一个向量分配给数据帧中的新列(作为一种相反的方式extract()).但我不明白语法应该如何工作.
说我有,作为一个玩具示例:
df = data.frame( id = 1:26, letter = letters)
newvalue = rnorm(26)
Run Code Online (Sandbox Code Playgroud)
我想在magrittr链中添加newvalue作为df的新列.我假设它是这样的:
df %>%
inset('new_column_name', newvalue)
Run Code Online (Sandbox Code Playgroud)
但是,这并不工作,大概是因为我不太理解的语法是什么[<-(对于这inset()是一个别名)应该像.
在magrittr链之外,我可以这样做:
df['new_column_name'] <- newvalue
Run Code Online (Sandbox Code Playgroud)
但我的问题是如何在一个链条中做到这一点,我已经完成了各种各样的操作.
当我使用vim时,我经常使用&反向替换整个匹配.例如,以下内容将"foo"的所有实例替换为"foobar":
%s/foo/&bar/g
Run Code Online (Sandbox Code Playgroud)
这里的好处是懒惰:我不必在匹配中键入括号,我只需要为替换中的反向引用键入一个字符而不是两个字符.也许更重要的是,在我输入比赛时,我没有弄清楚我的背叛,减少了认知负担.
是否有一个等同于&我在R的正则表达式中使用vim(可能使用perl = T参数)?
我在 RMarkdown 文档中编写了一个 SQL 块:
```{sql, connection = con, max.print = 300}
select * from myTable
```
Run Code Online (Sandbox Code Playgroud)
当我在 RStudio 中运行该块时,这将按预期在漂亮的表格中打印 300 行。
但是,我希望能够控制打印表格第一页上显示的结果数量 - 现在,RStudio 每页显示 10 行,并带有页面控件以跳转到我感兴趣的任何页面。
是否有一个代码块选项可以用来控制结果表中每页显示的结果数?
不管它的价值如何,我真的只对内联代码执行感兴趣——我并不真正关心编写文档时会发生什么,只关心在 RStudio 中运行该块时会出现什么。
如何反转辅助函数dplyr::select()(如matches()或contains()),以便我可以选择不包含或匹配特定字符串的变量?
例如,假设我想选择mtcars数据框中没有字母"m"的所有列.我可以想象做类似的事情:
mtcars %>%
select( !matches("m") )
Run Code Online (Sandbox Code Playgroud)
但是这会引发错误:
Error: !matches("m") must resolve to integer column positions, not a logical vector
如何编写辅助函数来反转它?
重要提示:一种可能性是使用matches()和编写一个不匹配的正则表达式,但我更感兴趣的是找到一种方法来维护辅助函数的简单性,但是反转它们返回的选择,而不是解决实际的"我如何选择这样的"问题.