当我加载一个包时,我收到一条消息,说明:
"The following object is masked from 'package:xxx'
Run Code Online (Sandbox Code Playgroud)
例如,如果我加载testthat然后assertive,我得到如下:
library(testthat)
library(assertive)
## Attaching package: ‘assertive’
##
## The following objects are masked from ‘package:testthat’:
##
## has_names, is_false, is_less_than, is_null, is_true
Run Code Online (Sandbox Code Playgroud)
这条消息意味着什么,我该如何预防呢?
我正在尝试清理一个数据库,这些数据库多年来获得了许多重复记录,名称略有不同.例如,在公司表中,有"Some Company Limited"和"SOME COMPANY LTD!"等名称.
我的计划是将违规表导出为R,将名称转换为小写,替换常见的同义词(如"limited" - >"ltd"),删除非字母字符然后agrep用来查看看起来相似的内容.
我的第一个问题是agrep只接受一个匹配的模式,并且循环每个公司名称以匹配其他公司名称的速度很慢.(有些待清理的表会有数十个,可能有数十万个要检查的名称.)
我已经非常简要地看了一下这个tm包(JSS文章),它看起来非常强大,但它主要用于分析大块文本,而不仅仅是名称.
我有一些相关的问题:
tm包是否适合这类任务?
有更快的替代方案agrep吗?(所述函数使用Levenshtein编辑距离,传闻速度慢.)
R中还有其他合适的工具,除了agrep和tm?
我是否应该在R中执行此操作,还是应该直接在数据库中执行此类操作?(这是一个Access数据库,所以如果可能,我宁愿避免触摸它.)
我收到了其中一个错误.
Error: unexpected symbol in "<my code>"
Error: unexpected input in "<my code>"
Error: unexpected string constant in "<my code>"
Error: unexpected numeric constant in "<my code>"
Error: unexpected SPECIAL in "<my code>"
Error: unexpected '<some punctuation>' in "<my code>"
Error: unexpected '<reserved word>' in "<my code>"
Run Code Online (Sandbox Code Playgroud)
错误意味着什么,我该如何解决?
一些重现错误的简单示例和常见变体:
a a
## Error: unexpected symbol in "a a"
a\
## Error: unexpected input in "a\"
a""
## Error: unexpected string constant in "a"""
""1
## Error: unexpected numeric constant in …Run Code Online (Sandbox Code Playgroud) 在Visual Studio中编译项目时,将显示错误消息"exec任务需要执行命令",没有行号.这个错误是什么意思?
(对于询问和回答我自己的问题表示歉意;我刚写完这篇文章时就找到了一个答案.已经把它作为社区维基,以免冒犯.)
当我在插入符号中运行2个随机森林时,如果我设置了一个随机种子,我会得到完全相同的结果:
library(caret)
library(doParallel)
set.seed(42)
myControl <- trainControl(method='cv', index=createFolds(iris$Species))
set.seed(42)
model1 <- train(Species~., iris, method='rf', trControl=myControl)
set.seed(42)
model2 <- train(Species~., iris, method='rf', trControl=myControl)
> all.equal(predict(model1, type='prob'), predict(model2, type='prob'))
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
但是,如果我注册并行后端以加速建模,每次运行模型时都会得到不同的结果:
cl <- makeCluster(detectCores())
registerDoParallel(cl)
set.seed(42)
myControl <- trainControl(method='cv', index=createFolds(iris$Species))
set.seed(42)
model1 <- train(Species~., iris, method='rf', trControl=myControl)
set.seed(42)
model2 <- train(Species~., iris, method='rf', trControl=myControl)
stopCluster(cl)
> all.equal(predict(model1, type='prob'), predict(model2, type='prob'))
[1] "Component 2: Mean relative difference: 0.01813729"
[2] "Component 3: Mean relative difference: 0.02271638"
Run Code Online (Sandbox Code Playgroud)
有什么方法可以解决这个问题吗?一个建议是使用doRNG包,但train使用嵌套循环,目前不支持:
library(doRNG)
cl …Run Code Online (Sandbox Code Playgroud) 给定一个函数,您如何确定它来自哪个命名空间?
例如,如果我mean.default在命令提示符下键入,则输出包括它在基本包中的事实.我希望能够做类似的事情getNamespace(mean.default)并让它返回"基础"(或实际的基础环境).
有一个getNamespace函数,但似乎只接受包名而不是函数名.
print.function使用内部代码来检索命名空间.我得到尽可能浏览do_printfunction中src/main/print.c,但后来又放弃了.
我收到了错误
Error in if (condition) { : argument is of length zero
Run Code Online (Sandbox Code Playgroud)
要么
Error in while (condition) { : argument is of length zero
Run Code Online (Sandbox Code Playgroud)
是什么导致此错误消息,这是什么意思?
在进一步检查时,似乎价值是NULL.
condition
## NULL
Run Code Online (Sandbox Code Playgroud)
为了处理这个错误,我该如何测试NULL值?
我希望这会返回TRUE,但我得到一个空的逻辑值:
condition == NULL
## logical(0)
Run Code Online (Sandbox Code Playgroud) 我收到了错误消息:
错误:找不到对象'x'
或者更复杂的版本
均值(x)中的错误:在为函数'mean'选择方法时评估参数'x'时出错:错误:找不到对象'x'
这是什么意思?