Javascript d3修改列名
我有一个tsv文件,正在使用以下代码进行解析:Javascript d3修改列名,javascript,csv,d3.js,Javascript,Csv,D3.js,我有一个tsv文件,正在使用以下代码进行解析: d3.tsv(file, 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 }); 我试图解释用户没有输入具有完全相同
d3.tsv(file, 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
});
我试图解释用户没有输入具有完全相同列名的文件的情况。更具体地说,我想说明列名是“Something.logFC”而不是“logFC”的情况。因此,我尝试通过以下操作修改列名:
d3.tsv(file, function(error, data) {
data.forEach(function(d) {
for (var i=0; i<d3.keys(d).length; i++){
if(d3.keys(d)[i].indexOf('.') > -1){
d3.keys(d)[i] = d3.keys(d)[i].split(".")[1];
}
};
d.NAME = d.NAME;
d.logFC = d.logFC;
d.logCPM = d.logCPM;
d.FDR = d.FDR;
d.PValue = d.PValue
});
d3.tsv(文件、函数(错误、数据){
data.forEach(函数(d){
对于(变量i=0;i-1){
d3.键(d)[i]=d3.键(d)[i]。拆分(“.”[1];
}
};
d、 NAME=d.NAME;
d、 logFC=d.logFC;
d、 logCPM=d.logCPM;
d、 FDR=d.FDR;
d、 PValue=d.PValue
});
但是,现在对于每个数据对象,新的列名中添加了未定义的值,而原始列名和值保持不变。使用此函数定位列名中的点,并仅保留任何名称中有点的最后一部分:
function removeDot(d){
Object.keys(d).forEach(function(origProp) {
var noDot = origProp.split(".")[1];
if (noDot != undefined) {
d[noDot] = d[origProp];
delete d[origProp];
}
});
return d;
};
要使用此函数,请定义如下访问器:
d3.tsv(file, removeDot, function(error, data) {
//all your code here
});
注意:请记住,只有
d3.csv
和d3.tsv
接受访问器。现在,您正在基于键创建一个变量并更改此变量,只是…d3没有使用该变量来获取对象。您必须更改实际的键。@GerardoFurtado我将我的问题更新为我认为会我会换钥匙,但不会。我怎么换实际的钥匙?我刚刚写了一个答案。