因此,我有一列值的范围从10到100,我希望所有值都四舍五入到最接近的10。技巧是,我希望它总是四舍五入。例如,55将变为50而不是60。我想象为此将实现floor,但是当我尝试floor时,它仅返回不变的相同值。
x
10
15
20
27
30
34
等...
我想要什么:
x
10
10
20
20
30
30
我尝试过的事情:
data$x <- floor(data$x)
这只给了我完全相同的值。
答案 0 :(得分:3)
由于floor(x)
得到的最小整数y
不大于x
,因此您可以将x
中的所有值除以10,得到下限,然后乘以十;也就是说,您可以使用floor(x/10) * 10
x <- c(10,
15,
20,
27,
30,
34)
floor(x/10) * 10
# [1] 10 10 20 20 30 30
答案 1 :(得分:2)
您不需要在这里发言,请%/%
v%/%10*10
[1] 10 10 20 20 30 30
答案 2 :(得分:2)
我在这方面迟到了,但是我确实有一个类似的解决方案,它似乎运行得很快。它与其他选项相似,但是使用//
// SearchBar.swift
// Yomu
//
// Created by Sendy Halim on 9/3/17.
// Copyright © 2017 Sendy Halim. All rights reserved.
//
import Foundation
import UIKit
class SearchBar: UISearchBar {
override func willMove(toSuperview newSuperview: UIView?) {
super.willMove(toSuperview: newSuperview)
searchBarStyle = .minimal
// Create search icon
let searchIcon = UIImageView(image: #imageLiteral(resourceName: "search"))
let searchImageSize = searchIcon.image!.size
searchIcon.frame = CGRect(x: 0, y: 0, width: searchImageSize.width + 10, height: searchImageSize.height)
searchIcon.contentMode = UIViewContentMode.center
// Configure text field
let textField = value(forKey: "_searchField") as! UITextField
textField.leftView = searchIcon
textField.borderStyle = .none
textField.backgroundColor = UIColor(hex: "#F7F7F7")
textField.clipsToBounds = true
textField.layer.cornerRadius = 6.0
textField.layer.borderWidth = 1.0
textField.layer.borderColor = textField.backgroundColor!.cgColor
textField.textColor = UIColor(hex: "#555555")
}
}
函数。
trunc
由reprex package(v0.2.1)于2019-01-09创建
我增加了x<- c(10, 15, 20, 27, 30, 34)
trunc(x / 10) * 10
#> [1] 10 10 20 20 30 30
identical(x %/% 10 * 10, floor(x/10) * 10)
#> [1] TRUE
identical(trunc(x / 10) * 10, floor(x/10) * 10)
#> [1] TRUE
向量的大小,并用x
运行所有三个向量。 microbenchmark
方法在此数据上最快。
trunc
由reprex package(v0.2.1)于2019-01-09创建