2013-02-25 2 views
1

в R у меня есть функция «getHbasedPortfolio». Тело функции заключается в следующем:как отделить каждую строку функционального тела с полуколоней в R

тела ("getHbasedPortfolio")

{ 
    className <- name 
    pf = list(name = name, 
      get = function(x) pf[[x]], 
      set = function(x,value) pf[[x]] <- value 
      ) 

    pf$getCash = function(date) { 

    data <-data.frame(name=name,value="null") 
    return(data) 
    } 
    pf$setCash = function(cash, date) { 

    a <- insertCashTable(pf$name, cash, date) 
    return("success") 

    } 

    pf <- list2env(pf) 
    class(pf) <- name 
    return(pf) 
} 

мне нужно отделить друг строки запятыми. Поэтому я написал код для этого. Код я использовал это следующим образом:

body <-""; 
for(i in 1:length(as.character(body("getHbasedPortfolio")))){ 
     body <- paste(body,as.character(body("getHbasedPortfolio"))[i]) 
     body <- paste(body,";") 
    } 

Теперь я получаю следующий результат.

тело [1] "{; имя класс < - имя; пф = список (имя = имя, получить = функцию (х) пф [[х]], устанавливается = функция (х, значение) пф [ [x]] < - value); pf $ getCash = function (date) {\ n data < - data.frame (name = name, value = \ "null \") \ n return (data) \ n}; pf $ setCash = function (cash, date) {\ na < - insertCashTable (pf $ name, cash, date) \ n return (\ "success \") \ n}; pf < - list2env (pf); class (pf) < - name; return (pf); "

Проблема заключается в том, что инструкции под pf $ setCash и pf $ getCash не разделяются запятыми. Как я могу решить эту проблему?

+3

Возможно, недостаток воображения с моей стороны, но я не могу придумать никаких причин для этого. Какова ваша цель? – Ista

+0

предназначен для хранения этого определения функции в базе данных, а затем извлечения данных из db для его использования в другой части проекта. Для этого каждая линия тела должна быть отделена; –

+0

Почему бы не использовать пакет? вы также можете посмотреть [https://github.com/hadley/devtools/wiki/Computing-on-the-language](https://github.com/hadley/devtools/wiki/Computing-on-the-language), но я думаю, что если вы задаете такие вопросы, как вы, это может перевернуться. – mnel

ответ

2

Вы можете использовать что-то вроде этого:

dat <- data.frame(capture.output(getHbasedPortfolio)) 

Это позволит сохранить функцию построчно линии в data.frame. Затем вы можете сохранить его в своей базе данных.

EDIT

вы можете использовать Даты писать построчно.

paste(data.frame(capture.output(getHbasedPortfolio))[,1], 
     collapse=',') ## I would use another separator here becuase comma is confusing 
+0

эта функция не полезна для меня. На самом деле мне нужен код, который разделяет каждую строку внутри функции внутри; –

+0

@DinoopNair rellay? У вас есть функция в файле data.frame по строкам. Каждая строка - это строка! Таким образом, вы можете делать то, что хотите. см. мое редактирование. – agstudy

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