我使用d3.tsv来解析文件。我想将数据的一列(PValue列)中的所有零更改为该列中下一个最低的数字。我相信这样做的正确方法是使用访问器函数,但我的尝试迄今都失败了。d3.csv修改输入数据
d3.tsv(filename, modifyData, function(error, data) {
data.forEach(function(d) {
d.NAME = d.NAME;
d.logFC = +d.logFC;
d.logCPM = +d.logCPM;
d.FDR = +d.FDR;
d.PValue = +d.PValue
});
})
当我尝试在访问器函数modifyData中执行类似以下操作时,出现错误,说'数据'在上面的代码中未定义。
function modifyData(d){
d.forEach(function(origData){
origData.PValue = +origData.PValue
pValue_array.push(origData.PValue)
})
var pValue_array = []
for (var i = pValue_array.length-1 ; i >= 0; i--){
if (pValue_array[i] === 0){
pValue_array.splice(i,1);
}
}
var newPzero = (arrayMin(pValue_array))
return d;
};
arrayMin是一个简单的函数,它返回数组中的最小值。我打算使用这个值来替换PValue列中的所有0。非常感谢帮助!
您需要最小值排除0,请看这里:http://stackoverflow.com/questions/29261994/use-d3-min-to-find-lowest-value-that -is而不是0。随着最小值只是当0出现 – Klaujesi
@Klaujesi是的,我有替换零部件的问题。 –