我正在尝试在promoters data上构建包含58个属性的ID3算法。我怎样才能使用循环(例如for或foreach)来初始化每个单独的属性而不是初始化所有?
基本上没有做下面的事情我想用循环来做但我不能在curlies中使用循环
var splits = line.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
var name = splits[1];
var data = splits[2].Trim();
string[] array = null;
for (int i = 0; i < data.Length; i++)
{
array[i]= data.ToCharArray().GetValue(i).ToString();
}
return new Instance
{
Output = new Output(splits[0], "Result"),
Features = new List<Feature>
{
new Feature(array[0], "1"),
new Feature(array[1], "2"),
new Feature(array[2], "3"),
new Feature(array[3], "4"),
//and so on for all atributes
}
};
答案 0 :(得分:2)
你可以这样做:
Features = Enumerable.Range(1, 58)
.Select(x => new Feature(array[x - 1], x.ToString()))
.ToList()
答案 1 :(得分:0)
另一个答案是好的,你应该在这种情况下熟悉LINQ。但是,如果您想了解如何使用您已熟悉的语言功能轻松完成此操作,您可以这样做:
var features = new List<Feature>();
for(int i = 0; i < 58; i++)
{
features.Add(new Feature(array[i], (i+1).ToString()));
}
然后在创建Instance
时指定此内容:
return new Instance
{
Output = new Output(splits[0], "Result"),
Features = features
};