2014-11-09 3 views
0

sparkTable 패키지를 사용하는 방법을 배우고 있습니다. sparkLine과 고정 된 수의 열이있는 테이블을 만들고 있습니다. 열은 모두 같은 결과를 얻습니다. 시계열의 n 번째 요소를 표시하고 2 자리로 반올림합니다. 예를 들어 스파크 그래프 다음의 열 1은 첫 번째 시점, 두 번째 열, 두 번째 데이터 점 등의 값을 표시합니다. 지금은 다음과 같이 처리합니다.R에서, 즉석에서 함수를 작성하십시오 (sparkTable 내용의 경우)

데이터에 나타날 것으로 예상되는 시간대를 허용하는 함수 목록을 처음 선언합니다. 이해야

st <- newSparkTable(my.data, tableContent = c(list(newSparkLine()), 
               get.values[1:max(my.data$time)]), 
        ...) 

이 잘 작동하지만, 나는 생각 해요 : newSparkTable를 호출 할 때 다음

get.values <- list(function(x) round(x[1],2), 
        function(x) round(x[2],2), 
        function(x) round(x[3],2), 
        function(x) round(x[4],2), 
        function(x) round(x[5],2), 
        function(x) round(x[6],2), 
        function(x) round(x[7],2), 
        function(x) round(x[8],2), 
        function(x) round(x[9],2), 
        function(x) round(x[10],2)) 

는, 나는 tableContent 인수가 데이터에 존재하는 시점의 수를 "확장"확인 좀 더 유연한 접근법이 될 수 있습니다. (파이썬에서 람다 함수를 생각하고 있습니다. 아이디어를 환영합니다.

편집

나는 그것에 가까워지고 있어요. 다음

paste("function(x) round(x[", 1:max(my.data$time), "],2)", sep="") 

# For instance if max(my.data$time)==10 
> paste("function(x) round(x[", 1:10, "],2)", sep="") 
[1] "function(x) round(x[1],2)" "function(x) round(x[2],2)" "function(x) round(x[3],2)" 
[4] "function(x) round(x[4],2)" "function(x) round(x[5],2)" "function(x) round(x[6],2)" 
[7] "function(x) round(x[7],2)" "function(x) round(x[8],2)" "function(x) round(x[9],2)" 
[10] "function(x) round(x[10],2)" 

:하지만

> eval(parse(text=paste("function(x) round(x[", 1:10, "],2)", sep=""))) 
function(x) round(x[10],2) 

만 마지막은 eval'd 얻는 방법이 트릭을 할 것이라고 평가 코드를 가지고있다. : j 로컬 스코프 index 값을 결합하는 것이 필요하다

round.factory = function(index) { 
    j = index 
    function(x) round(x[j], 2) 
} 

get.values = lapply(1:10, round.factory) 

중간 변수 : 공장 기능 lapply S

+0

R에서'function'으로 익명 함수를 생성하는 것은 파이썬에서'lambda '와 같습니다. 어떤 종류의 유연성을 달성하려고합니까? 루프 또는 적용 함수 내에서 이러한 익명의 함수를 작성할 수 있습니다. –

+0

나는 어디로 가려고하는지 짧은 예제를 추가했습니다. –

+0

함수를 문자열로 생성하고 평가하는 것은 매우 R 유사하지 않습니다. 무엇을 성취하려고합니까? 아마 우리는 최종 목표가 무엇인지 알면 다른 관점에서 빛을 발산 할 수 있습니다. –

답변

1

사용 기능 목록을 생성한다.

+1

대신에'force (index)'를 쓸 수도 있습니다. – baptiste

+0

Nick과 baptiste에게 감사드립니다. 새로운 것을 배울 수있었습니다. –