r - 在我的 R 代码中观察到异常的逻辑不一致
问题描述
要学习/记住的东西。
寻找避免此类错误的提示。
在编写大(ish)R
代码来遍历许多数据文件并创建数据摘要时,我想使用:
File_data$name[p] %in% nr_counter$NAME
这应该基本上检查字符(名称)是否File_data$name[p]
属于. 但令我惊讶的是,该命令无法解决。我不知道为什么。我得到的唯一线索是测试:NAME
nr_counter
File_data$name[p] == "Bohuslav Diviš"
当它应该为 TRUE 时返回 FALSE(文本是“Bohuslav Diviš”)。
以下是我上传的更多代码输出,用于测试对象的类型和控制台中的一些逻辑不匹配
> File_data$name[p] %in% nr_counter$NAME
[1] FALSE
> File_data$name[p]
[1] "Bohuslav Diviš"
> nr_counter$NAME
[1] "qwert" "Bohuslav Diviš"
> nr_counter$NAME[2]
[1] "Bohuslav Diviš"
> File_data$name[p] == nr_counter$NAME[2]
[1] FALSE
> "Bohuslav Diviš" %in% nr_counter$NAME
[1] TRUE
> "Bohuslav Diviš" == File_data$name[p]
[1] FALSE
> File_data$name[p] == "Bohuslav Diviš"
[1] FALSE
> typeof(File_data$name[p])
[1] "character"
> typeof(nr_counter)
[1] "list"
> typeof(nr_counter$NAME)
[1] "character"
> nr_counter
NAME COUNTRY COUNTER
1 qwert asdfg 1
2 Bohuslav Diviš Czechoslovakia 1
> as.character(File_data$name[p]) %in% as.character(nr_counter$NAME)
[1] FALSE
由于名称中的特殊字母“š”,这可能是一个问题吗?
我认同。基于我所做的以下更改:
> File_data$name[p] = "Bohuslav Divis"
> nr_counter$NAME[2] = "Bohuslav Divis"
File_data$name[p] %in% nr_counter$NAME
[1] TRUE
我想如果我恢复到带有“š”的名称,那么如果单独的特殊字母引起问题,那么这个逻辑测试应该是 FALSE。这是结果:
> nr_counter$NAME[2] = "Bohuslav Diviš"
> File_data$name[p] = "Bohuslav Diviš"
> File_data$name[p] %in% nr_counter$NAME
[1] TRUE
如上所示,没有获得 FALSE。因此,现在我对如何在运行大量数据的代码中进行测试感到困惑。
感谢您的耐心等待,希望这一观察能激怒您的创意中心。
干杯...
解决方案
推荐阅读
- python - 如何从 openpyxl 中的列对象中提取单元格值?
- r - 如何订购 R H2O 中因子的水平
- vba - 在 VBA 中比较两个字典之间的数据
- reactjs - 遇到 API 调用的 React 错误
- oracle - Oracle Apex 动态标题取决于 sql
- gitlab - 如何在 gitlab-ci.yml 中指定我的本地 .bat 文件(在 Gitlab 服务器上运行)?
- javascript - 在 JavaScript 模板中为函数提取 i 变量
- spring - JSF 控制器在 spring 中不支持 post 方法
- apache - 域 www 和非 www 指向不同的路径
- sql-server - TFS 从 2017 年升级到 2018 年