2016-12-25 5 views
0

У меня есть эта таблица данных называется tmp.df.lhs.denorm, которые я представил первые 2 ряда впереди:R создать столбцы таблицы данных динамически

> dput(tmp.df.lhs.denorm[1:2]) 
structure(list(rules = c("{} => {Dental anesthetic products-Injectables cartridges|2288210-Septocaine Cart 4% w/EPI}", 
"{Dental small equipment-Water distiller parts & acc|5528005-EzeeKleen 2.5HD UV Lamp1,Dental small equipment-Water distiller parts & acc|5528005-EzeeKleen 2.5HD UV Lamp2} => {Dental small equipment-Water distiller parts & acc|5528004-EzeeKleen 2.5HD RO Membra}" 
), support = c(0.501710236989983, 0.000610798924993892), confidence = c(0.501710236989983, 
1), lift = c(1, 1637.2), rule.id = 1:2, lhs_1 = c(NA, "Dental small equipment-Water distiller parts & acc|5528005-EzeeKleen 2.5HD UV Lamp1" 
), lhs_2 = c(NA, "Dental small equipment-Water distiller parts & acc|5528005-EzeeKleen 2.5HD UV Lamp2" 
)), .Names = c("rules", "support", "confidence", "lift", "rule.id", 
"lhs_1", "lhs_2"), class = c("data.table", "data.frame"), row.names = c(NA, 
-2L), .internal.selfref = <pointer: 0x0000000007120788>) 

Примечание столбцы lhs_1 и lhs_2, которые являются продуктом ул расколу по правилам столбцов.

Моя проблема заключается в том, что для разных данных правила столбцов могут содержать различное количество правил, разделенных запятой, например. Я мог бы получить 3 столбца lhs_1, lhs_2 и lhs_3 и т. Д., В зависимости от количества запятых, которые у меня есть в правилах столбца. Решение состоит в том, чтобы определить фиксированное количество столбцов lhs_ * (параметр в моем коде, скажем, 6), где этот конкретный пример dt tmp.df.lhs.denorm будет объединен с дополнительными 4 пустыми столбцами по имени lhs_3, lhs_4, lhs_5 и lhs_6. Любая помощь оценили

+0

Не очень понятно. Просьба уточнить. Где вы используете 'max_len'? – Sotos

+0

max_len - это глобальный параметр, который задается в файле конфигурации. – NRG

+0

Я думаю [этот ответ] (http://stackoverflow.com/a/26899992/5977215) решит это. – SymbolixAU

ответ

0

Я нашел обходной путь, который делает работу:

tmp.df.lhs.denorm.art <- data.table(rules = character(), 
             support = numeric(), 
             confidence = numeric(), 
             lift = numeric(), 
             rule.id = integer(), 
             lhs_1 = character(), 
             lhs_2 = character(), 
             lhs_3 = character(), 
             lhs_4 = character(), 
             lhs_5 = character(), 
             lhs_6 = character() 
            ) 
    tmp.df.lhs.denorm.complete <- rbindlist(list(tmp.df.lhs.denorm, tmp.df.lhs.denorm.art), fill=TRUE) 

 Смежные вопросы

  • Нет связанных вопросов^_^