varfun changes the variable names in the table

decimate_func = @(x) x(1:data_step:end);
T1 = varfun(decimate_func,T);
T2 = T(1:data_step:end,:);
T is a table of double and string columns. Expected T1 to be te same as T2, however T1 modifies the column names by adding a "Fun_" to the variable names. why?

 채택된 답변

dpb
dpb 2022년 8월 18일
편집: dpb 2022년 8월 20일
Because you operated on it with a function and so it is NOT the same variable any more -- that is documented behavior. varfun doesn't know (or care) that the function only selects a given subset of the same variable and doesn't modify it. It ((varfun, that is) also doesn't try to parse the function name (since so often one uses anonymous functions amongst other reasons) to add to the variable name; it just uses 'Fun_' as the arbitrary identifier.
You can manually rename the variables if you wish, of course...
T2.Properties.VariableNames=T.Properties.VariableNames; % put original names back

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Tables에 대해 자세히 알아보기

제품

릴리스

R2020b

태그

질문:

2022년 8월 18일

편집:

dpb
2022년 8월 20일

Community Treasure Hunt

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

Start Hunting!

Translated by