在项目中,我看到d1$tmp <- sapply(d1$datetime, function(x) {
mtch = x >= d2$start & x <= d2$end
ifelse(any(mtch), d2$mp[mtch], NA)
})
d1
# v1 datetime tmp
#1 23 2016-02-14 12:00:10 1
#2 12 2016-02-14 12:03:10 1
#3 21 2016-02-14 12:50:00 NA
#4 52 2016-02-14 13:01:10 2
#5 53 2016-02-14 13:05:50 2
#6 23 2016-02-14 13:09:25 2
#7 95 2016-02-14 13:20:10 NA
#8 11 2016-02-14 13:21:00 NA
#9 64 2016-02-14 13:25:12 3
#10 41 2016-02-14 13:45:34 3
#11 14 2016-02-14 13:53:08 3
的以下用法:
add_argument()
其中parser = argparse.ArgumentParser()
parser.add_argument("--somearg",type=make_arg_instance,help='blahblahblah')
args = parser.parse_args()
i = args.somearg.somefunction()
是定义为的函数:
make_arg_instance
似乎这个论点&#39; somearg&#39;是一个def make_arg_instance():
somearg = SomeClassName()
return somearg
对象,而不是class
,这就是为什么以后调用int
方法的原因。
在我看过的大多数教程中,参数的类型总是i = args.somearg.somefunction()
,因此有人可以解释一下如何添加int
类型的参数或{{1}以外的任何类型}}?谢谢!
答案 0 :(得分:3)
来自documentation for the type
argument:
默认情况下,
ArgumentParser
个对象以简单的字符串形式读取命令行参数。但是,通常命令行字符串应该被解释为另一种类型,如float
或int
。type
的{{1}}关键字参数允许执行任何必要的类型检查和类型转换。[...]
add_argument()
可以接受任何带有单个字符串参数的callable并返回转换后的值
您可以传入任何可调用的,前提是它需要转换一个参数。 type=
是可调用的,但这并不意味着你必须使用它。如果您想要某些其他类型或想要对允许值应用额外约束,您可以指定自己的。