lw<- function(x){length(which(df$variable==someValue))}
agg<- aggregate(Var1~Var2+Var3, data=df, FUN=lw)
names(agg)<- c("Some", "Pretty", "Names", "Here")
View(agg)
Нет, вы не можете, и нет никакого смысла честно иметь такую особенность.
Если вам нужно динамически назначать некоторые данные с ключом и значением, вы можете использовать словарь:
Dictionary<string, RectangleShape> shapes = new Dictionary<string, RectangleShape>();
shapes.Add("matrix1_2", new RectangleShape( ... ));
Тогда вы можете просто прочитать «переменную», например
shapes["matrix1_2"]
Вы могли бы с отражением, но я подозреваю, что в этом случае theere - лучший дизайн, который вы могли бы реализовать, это было бы лучше, чем использование рефлексии.
Объявите переменную словаря:
Dictionary<string, RectangleShape> rectangleDictionary = new Dictionary<string, RectangleShape>();
Затем, где вы бы указали нормальный текст «matrix1_2 = somevalue ; "вместо этого напишите:
rectangleDictionary.add("matrix1_2", somevalue)
Тогда вы сможете работать с именем переменной:
rectangleDictionary["matrix1_2"] = someothervalue;
rectangleDictionary["matrix1_2"].someproperty = something;
Microsoft.VisualBasic.PowerPacks.RectangleShape y = rectangleDictionary["matrix1_2"];
Кажется, плохая идея. Попробуйте использовать перечисления или собственные типы данных / классы
Уже существует ли «matrix1_2»? Другими словами, когда вы говорите y = ??? вы пытаетесь получить доступ к существующей переменной или создать ее.
Насколько я знаю, нет способа создать новый экземпляр «named» во время выполнения. Однако вы можете получить имена существующих полей и выбрать их с помощью System.Reflection.
String x = "matrix1_2";
Microsoft.VisualBasic.PowerPacks.RectangleShape y;
Type type = typeof(MyType); // Get type pointer
FieldInfo[] fields = type.GetFields();
foreach (var field in fields)
{
if (field.Name == "matrix1_2")
{
y = field;
}
}
MyType
выше - это имя любого класса matrix1_2
.
Таким образом вы можете получить значение поля из динамического типа (используя C # в проекте Silverlight 5).
Type itemType = item.GetType();
try
{
PropertyInfo field = itemType.GetProperty(fieldName);
object val = field.GetValue(item, null);
}
catch (Exception ex)
{
// field doesn't exist, do something else
}
* Где «элемент» - это динамический тип, сгенерированный во время выполнения (но не обязательно), а «fieldName» - это строка для имени свойства, которое вы ищете.
Нет, это не так. Если «matrix1_2» - это локальная переменная, то вы не можете сделать это, поскольку переменная может даже не существовать после завершения компилятора, если это фактически поле экземпляра, тогда отражение может помочь:
object value = obj.GetType().GetField(fieldName).GetValue(obj);
Это невозможно.
Вы не можете иметь имена динамических переменных в C #, VB.NET или любом языке .NET. Поддержка такой функции отсутствует.