我有两个文本文件:ped1.txt
和ped2.txt
。字段分隔字符是制表符/空格。
ped1.txt
222 333 444
333 458 458
458 774 556
500K lines...
ped2.txt
222 -12006
333 -11998
对于所有数据,我需要使用文件2中的密钥重新编码文件1中的数字。 结果应该是:
-12006 -11998 444
-11998 458 458
458 774 556
500K lines...
怎么做? 感谢。
答案 0 :(得分:0)
用
import UIKit
class ImageCell: UITableViewCell {
@IBOutlet weak var urlImageView: UIImageView!
@IBOutlet weak var loadingStatus: UIActivityIndicatorView!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
func loadImageFromUrl(url: String, view: UIImageView){
if view.image == nil {
self.startLoading()
// Create Url from string
let url = NSURL(string: url)!
// Download task:
// - sharedSession = global NSURLCache, NSHTTPCookieStorage and NSURLCredentialStorage objects.
let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (responseData, responseUrl, error) -> Void in
// if responseData is not null...
if let data = responseData{
// execute in UI thread
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.stopLoading()
view.image = UIImage(data: data)
})
}
}
// Run task
task.resume()
}
}
func displayImage(imageUrl: String){
imageView?.image = nil
if imageUrl != nil && imageUrl != "" {
print(imageUrl)
loadImageFromUrl(imageUrl,view: urlImageView)
} else {
loadingStatus.hidden = true
}
}
func startLoading(){
loadingStatus.hidden = false
loadingStatus.startAnimating()
}
func stopLoading(){
loadingStatus.hidden = true
loadingStatus.stopAnimating()
}
}
你可以这样做:
ped1
# V1 V2 V3
# 1 222 333 444
# 2 333 458 458
# 3 458 774 556
ped2
# V1 V2
# 1 222 -12006
# 2 333 -11998
或
apply(ped1, c(1,2), function(x) ifelse(x %in% ped2$V1, ped2$V2[ped2$V1 == x], x))
# V1 V2 V3
# [1,] -12006 -11998 444
# [2,] -11998 458 458
# [3,] 458 774 556
取决于您的偏好。
答案 1 :(得分:0)
使用as.vector()将第一个矩阵转换为矢量。
然后使用plyr包中的mapvalues()或者甚至更高效地使用data.table包中的set()方法。 set()方法要求您在转换为vector之后转换为单列data.table。
完成重新编码/替换后,您可以使用方法矩阵(your_new_vector,ncol = original_number_of_cols)转换回矩阵。
玩得开心