Skip to content

Commit

Permalink
Added check for different variables length.
Browse files Browse the repository at this point in the history
  • Loading branch information
sethyuan committed Mar 16, 2013
1 parent f8617c5 commit c1e6b62
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 1 deletion.
7 changes: 6 additions & 1 deletion lib/xtabs.js
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,12 @@ table = function(x) {
varNames = Array.prototype.slice.call(arguments, 1, arguments.length);
vars = new Array(varNames.length);
for (var i = 0; i < varNames.length; i++) {
vars[i] = factor(x[varNames[i]], useNull);
vars[i] = x[varNames[i]];
}
if (!vars.every(function(v) { return v.length === vars[0].length }))
throw new Error("variables must have the same length.");
for (var i = 0; i < varNames.length; i++) {
vars[i] = factor(vars[i], useNull);
}
}
return constructTable(varNames, vars);
Expand Down
10 changes: 10 additions & 0 deletions test/xtabs.js
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,16 @@ describe("xtabs", function() {
});
});

it("diffrent length data", function() {
var data = {
department: ["MIS", "MIS", "HR", "TR", null, "TR", "MIS"],
gender: ["M", "F", null, "M", "F", "M"]
};
(function() {
xtabs.table(data, "department", "gender");
}).should.throw();
});

it("single factor", function() {
var x = xtabs.factor(["Male", "Female", "Female", "Female", "Male", "Female"]),
t = xtabs.table(x);
Expand Down

0 comments on commit c1e6b62

Please sign in to comment.