r - 检查函数中的字符条目是否在 R 中的向量集中
问题描述
拜托,我正在尝试根据用户的条目打印一条消息。我正在为测试而学习,我想创建一个函数,如果我键入特定的文章(变量字符),它将检查一组向量并打印一条消息。
ExpfromUS <- function(x){
x <- readline("Check if your articles could be import or export to US. Entry the type of article that you want to ship: ")
a <- c(x == CBOExUS)
b <- c(x == RQSVExUS)
e <- c(x == NATExUS)
for ( i in length(a == TRUE)){
if (a[i] == TRUE){
print("Ok, but just with Contractual basis only");
break; }
else{ for (i in length(b)){
if (b[i] == TRUE){
print("Ok, but with restrictions of quantity, size or value");
break;}
else{ for (i in length(c)){
if (e[i] == TRUE){
print("Sorry, but we are not able to ship your cargo at this moment");
break;}
else{ print("Please check your entry we could not find this article in our database")
}}
}
}
}
}
}
但是总是打印最后一条消息“请检查您的条目,我们在我们的数据库中找不到这篇文章”,我做错了什么?(对不起,这是一个初学者级别的疑问)。感谢所有花时间帮助我的人。
解决方案
扩展我的评论:我怀疑您对所有for
循环的索引是(部分)问题。当前索引只会导致一次迭代,因为length(a == TRUE)
将返回一个整数。我怀疑您想要“a == TRUE”的数值,以便您可以在该行输出一条消息。该which
函数返回与逻辑向量的“TRUE”值的索引相对应的数值,所以也许你想要:
for ( i in which(a) ){
....}
else{ for (i in which(b)){
...}
else{ for (i in which(c)){
....}
进一步注意:在使用逻辑向量时,很少需要包含 == TRUE
,并且当向量包含 NA 时,有时会返回意外结果,因为 NA 永远不会包含==
任何内容。
鉴于您为这三个向量提供的值,我现在认为它应该是
{....
a <- x %in% CBOExUS # the c() not needed. This returns a logical vector
b <- x %in% RQSVExUS
e <- x %in% NATExUS
.....
该%in%
函数允许您测试多个值。该==
函数询问是否存在完全相等,显然不太可能。这些更正可能还有其他缺陷,但我们仍然没有 [MCVE],因此我们仍然无法提供经过测试的编码。
推荐阅读
- r - as.triangle 生产长桌而不是三角形
- c# - 如果数据库有新行,如何更新 Kendo Grid?
- java - 按类型变量创建列表
- c# - 无法在本地环境中对同级 docker 容器进行 http 请求
- bash - 将值数组传递给 bash 脚本以用作参数
- python - Python pandas,如何将特定的excel日期转换为json
- java - 如何解决 dropwizard 配置文件中的此错误?
- python - 尝试使用 python 3.7 在 quickfixengine 中获取市场数据请求
- azure - 允许基于 ASP.NET Core 中的策略的匿名身份验证
- node.js - NodeJS,如何使用谷歌 api 获取带有刷新令牌的新令牌?