字符串变量名
17日视图(30天)
显示旧的评论
我有一个表,当空列和数以千计的行包含字符串和数值(附加小样本)。我需要情节数百种不同的数据通过匹配特定条件和提取每个情节,只有部分的数据基于这个标准。我想通过两个变量(匹配
.Properties.VariableNames
)函数将做一些基于这两个输入参数。
我开始阅读将字符串转换为变量名和发现弃用功能
genvarname ()
,点
matlab.lang.makeValidName ()
这需要字符串作为参数。但后者给了我错误:
未被认可的表变量名称“X”。
我想使用它的方法是通过阅读我的数据:
结果= readtable (“raw_data.csv”,“PreserveVariableNames”,真正的);
然后指定变量名我想处理:
X = matlab.lang.makeValidName (“σ”);
Y = matlab.lang.makeValidName (“LR”);
然而,试图通过
X
和
Y
作为函数的参数,然后引用如下:
results.X
扔我的错误。
如果我手动编辑这个调用
results.Sigma
或
results.LR
,一切都很好。但改变这两个变量的函数会打败它的目的。我喜欢保持
X
和
Y
广义函数中的变量名,只有改变上面的两行之前调用的函数。
谁能告诉我什么最合适的方法来解决这个问题,好吗?
接受的答案
更多的答案(3)
每•艾萨克森
2021年8月23日
编辑:每•艾萨克森
2021年8月23日
第一次做点运动
% %
结果= readtable (“raw_data.csv”);
结果(4:)
% %
results.Properties.VariableNames {“σ”}=“X”;
results.Properties.VariableNames {“LR”}=“Y”;
结果(4:)
国际海事组织,重命名变量最终会导致混乱。一种更好的方式来实现
“我喜欢把X和Y是广义函数中的变量名”
是定义函数
函数foo (X, Y)
X和Y %做东西
结束
和叫他们
foo(结果。σ,results.LR)
2的评论
Stephen23
2021年8月27日
编辑:Stephen23
2021年8月27日
混合无关的话题让你认为这是比这复杂得多。
看您自己的代码,你写在你的问题:
results.Sigma
results.LR
然后你在那之后写道:
“如果我手动编辑这个调用
results.Sigma
或
results.LR
,一切都很好。但改变这两个变量的函数会打败它的目的。"
x = [“σ”,“Xpair2”,“Xpair3”,. .“XpairN”];
y = [“LR”,“Ypair2”,“Ypair3”,. .“YpairN”];
为k = 1:元素个数(x)
Xdata =结果。(Xs (k));
Ydata =结果。(Ys (k));
…无论处理Xdata Ydata
结束
所以你可以很容易地
“手动”
选择和处理任何对你想要的数据。
我看到绝对没有理由数百次你需要复制和粘贴代码。
0评论
图像分析
2021年8月23日
不仅仅是使用“eval()是一个大禁忌”就像你说的,那就是写一个程序,你的整个概念不知道提前变量名和创建命名变量基于字符串或其他运行时的输入是一个坏主意。
这是糟糕的时期。不是eval()问题所以你只需要找到一些其他方法或“替代法”做坏事。它不是一个好主意。我总是认为这是显而易见的,不需要太多的解释,但也许其他人有不同的想法或不明白的解释。
看到另一个的常见问题的讨论。