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
R에서'function'으로 익명 함수를 생성하는 것은 파이썬에서'lambda '와 같습니다. 어떤 종류의 유연성을 달성하려고합니까? 루프 또는 적용 함수 내에서 이러한 익명의 함수를 작성할 수 있습니다. –
나는 어디로 가려고하는지 짧은 예제를 추가했습니다. –
함수를 문자열로 생성하고 평가하는 것은 매우 R 유사하지 않습니다. 무엇을 성취하려고합니까? 아마 우리는 최종 목표가 무엇인지 알면 다른 관점에서 빛을 발산 할 수 있습니다. –