Error Attempt to execute SCRIPT join_function as a function:

1 次查看(过去 30 天)
I'm trying to merge 100 tables from a cell array. I'm trying to use loop that calls the function 'join_function' but I get this error. Can anyone help?
join_function:
c = outerjoin(data{1,1},data{1,2},'Keys','time','MergeKeys',true);
loop:
numfiles = 100;
demand = table(1, numfiles);
for j = 1:numfiles
demand_file = sprintf('data{1,%d}', j);
demand{k} = join_function(demand_file);
end
error message from commanf window:
Attempt to execute SCRIPT join_function as a function:
C:\Users\Mark\Downloads\join_function.m
Error in testjoinall (line 14)
demand{k} = join_function(demand_file);

采纳的回答

Jan
Jan 2018-1-30
编辑:Jan 2018-1-30
The error message is clear: join_function.m is a script file and then it does not accept input arguments. Only functions do this. See https://www.mathworks.com/help/matlab/matlab_prog/scripts-and-functions.html and https://www.mathworks.com/help/matlab/learn_matlab/scripts-and-functions.html .
The code has more problems. sprintf('data{1,%d}', j) creates strings, char vectors to be exact. But in the joining you try to access the contents of an data array. This is something completely different. 'data{1,2}' is a char vector, but does not carry any information about the array called "data".
It is strange, that you create 'data{1,1}' in the loop, but try to access the two elements of the cell array data{1,1} and data{1,2} inside the outerjoin function.
I guess, you want something like this:
numfiles = 100;
demand = table();
for j = 1:numfiles
demand = outerjoin(demand, data{1, j}, 'Keys', 'time', 'MergeKeys', true);
end
  5 个评论
Walter Roberson
Walter Roberson 2018-1-31
Jan's suggested code
demand = table()
created a table with no variables. You would need to omit that line
Jan
Jan 2018-1-31
编辑:Jan 2018-1-31
You can omit the initialization with an empty table, but use the first table and start the concatenation at the 2nd one:
numfiles = 100;
demand = data{1, 1};
for j = 2:numfiles
demand = outerjoin(demand, data{1, j}, 'Keys', 'time', 'MergeKeys', true);
end

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Tables 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by