我在data.tables上运行预测,有时候尾部有NA值。这些值尚不可用,可以删除。如何在系列结尾处删除NA值?
var image = new ol.style.Circle({
radius: 5,
fill: null,
stroke: new ol.style.Stroke({color: 'red', width: 1})
});
var styles = {
'Point': [new ol.style.Style({
image: image
})]};
var styleFunction = function(feature, resolution) {
return styles[feature.getGeometry().getType()];
};
var CITYClusterSource = new ol.source.Cluster({
source: new ol.source.Vector({
url: 'world_cities.json',
format: new ol.format.GeoJSON(),
projection: 'EPSG:3857'
}),
})
var CITYClusterLayer = new ol.layer.Vector({
source: CITYClusterSource,
style: styleFunction
});
setTimeout(function () { CITYClusterSource.clear(); }, 5000);
var map = new ol.Map({
target: 'map',
renderer: 'canvas',
layers: [
new ol.layer.Tile({
source: new ol.source.OSM(),
}),
CITYClusterLayer
],
view: new ol.View({
center: ol.proj.transform([15.0, 45.0], 'EPSG:4326', 'EPSG:3857'),
zoom:3
})
});
答案 0 :(得分:1)
找到最后一个非NA
并保持一切:
DT[ seq( max(which(!is.na(v))) ) ]
同样,你可以反过来使用which.max
:
DT[ seq( .N-which.max(rev(!is.na(v)))+1L ) ]
如果最后没有NA
丢弃,则两个选项都可以正常工作。
如果v
完全NA
:
max(which(!is.na(v)))
会-Inf
,因为which
会返回一个空值。
这会导致seq
抛出错误。
which.max(rev(!is.na(v))
将返回1
,因为FALSE
是在位置1中找到的最大值。
这意味着返回所有行。
如果你想要那种情况下的其他行为(比如不返回任何行),那么解决它应该很简单。