> typeof(as.integer(readline()))
11
[1] "integer"
> typeof(as.integer(readline()))
1.1
[1] "integer"
> typeof(as.integer(readline()))
abc
[1] "integer"
Предупреждение:
В typeof(as.integer(readline())) : в результате преобразования созданы NA
如果您需要经过验证的转换,那么还有其他选择。我会给他们两个:
checkmate::asInt
base::scan
checkmate::asInt
> checkmate::asInt(1.1)
Ошибка в checkmate::asInt(1.1) :
Assertion on '1.1' failed: Must be of type 'single integerish value', not 'double'.
> checkmate::asInt(1)
[1] 1
base::scan
> scan(file = stdin(), n = 1, what = integer())
1: asdfasd
1:
Ошибка в scan(file = stdin(), n = 1, what = integer()) :
'scan()' ожидает 'an integer', а не 'asdfasd'
> scan(file = stdin(), n = 1, what = integer())
1: 1.1
1:
Ошибка в scan(file = stdin(), n = 1, what = integer()) :
'scan()' ожидает 'an integer', а не '1.1'
> scan(file = stdin(), n = 1, what = integer())
1: 100
Read 1 item
[1] 100
相反
as.numeric
,您应该使用as.integer
. 在这种情况下,浮点数将被转换为整数。如果您需要经过验证的转换,那么还有其他选择。我会给他们两个:
checkmate::asInt
base::scan
checkmate::asInt
base::scan