Вы ищете режим. R не имеет встроенной функции для режима, но вы можете создать функцию для этого:
library(data.table)
setDT(df)
getmode <- function(v) {
uniqv <- unique(v)
uniqv[which.max(tabulate(match(v, uniqv)))]
}
df[,characteristics1:=getmode(characteristics1), by=Person]
Person characteristics1
1: A 1
2: A 1
3: A 1
4: A 1
5: A 1
6: A 1
Найти базовый тип объекта содержавшимся в rutime вызываемой обертке (Система. __ ComObject), Вы использовали бы закуску. Вы затем смогли бы создать или бросить к управляемому типу от этой информации.
Например;
string type = (string)result.GetType().InvokeMember("getType",
BindingFlags.InvokeMethod, null, result, null);
Кроме того, Вы могли использовать invokeMember для получения значений. Например, Вы могли вызвать valueOf метод для преобразования массива в большинство значимых примитивных возможных значений или toString к убежищу массив к строке csv.
string result = (string)result.GetType().InvokeMember("toString",
BindingFlags.InvokeMethod, null, result, null);
string[] jsArray = result.Split(',');
// c# jsArray[n] = js result[n]
Править: Третий способ сделать это в c# 4.0 должно использовать новый динамический тип. Динамический тип делает действительно легким сделать последние ограниченные запросы к COM-объектам.
string csv = ((dynamic)result).toString();