2016-11-15 4 views
2

http://rstudio.github.io/DT/010-style.html에 제공된 예제의 다음 단계로, 아래 그림과 같이 필터 값을 기준으로 셀의 문자열 부분을 강조 표시하고 싶습니다 . 나는 생물학적 서열 데이터의 특정 모티프를 표 형식으로 강조하려고 노력하고있다. 다음은 Excel VBA 코드와 대표 이미지입니다. R에서 이것을 달성 할 수 있습니까?필터 값을 기반으로 셀 내용의 문자열 부분 강조 표시

Sub SequencePartColourMacro() 
Dim Col, Row, FirstRow, LastRow As Integer, Col As Long 

Col = 6 
FirstRow = 2 
LastRow = ThisWorkbook.Sheets("Sequences").Cells(Rows.Count, "F").End(xlUp).Row 

Test1 = "CC" 
Test2 = "TT" 
Test3 = "GG" 

For Row = FirstRow To LastRow 
    Sequence = ThisWorkbook.Sheets("Sequences").Cells(Row, Col).Value 
    For x = 1 To Len(Sequence) 
    SubSequence1 = Mid(Sequence, x, 2) 
    If SubSequence1 = Test1 Then 
     ThisWorkbook.Sheets("Sequences").Cells(Row, Col).Characters(x, 2).Font.Color = RGB(0, 0, 255) 
     ThisWorkbook.Sheets("Sequences").Cells(Row, Col).Characters(x, 2).Font.Bold = True 
    End If 
    If SubSequence1 = Test2 Then 
     ThisWorkbook.Sheets("Sequences").Cells(Row, Col).Characters(x, 2).Font.Color = RGB(0, 102, 0) 
     ThisWorkbook.Sheets("Sequences").Cells(Row, Col).Characters(x, 2).Font.Bold = True 
    End If 
    If SubSequence1 = Test3 Then 
     ThisWorkbook.Sheets("Sequences").Cells(Row, Col).Characters(x, 2).Font.Color = RGB(255, 153, 0) 
     ThisWorkbook.Sheets("Sequences").Cells(Row, Col).Characters(x, 2).Font.Bold = True 
    End If 
Next x 
Next Row 
End Sub 

Representative image showing highlighted characters

+0

그래서 필터 값을 말하면 테이블의 실제 필터 검색 상자에 대해 말하는 것이 아닙니다. 테이블에 강조 표시하고자하는 미리 정의 된 문자열 test1, test2, test3이 있습니까? – Carl

답변

2

이 좀 장황하지만, 그래서 일반적으로 VBA입니다 : 모든 항목을 확인하고 강조에 @ 칼의 코드 결과

library(DT) 
set.seed(1986) 
x <- vector() 
# create fake dna or rna sequence (it's been a while since I took bio) 
for (i in 1:10) { 
    x[i] <- paste0(sample(c("A","G","T","C"),10,replace=TRUE), collapse="") 
} 

dim(x) <- c(5,2) 

datatable(x, options = list(rowCallback=JS(
    "function(row,data) { 
    data[0]=data[0].replace('CC','<span style=\"color:red\">CC</span>'); 
    data[0]=data[0].replace('TT','<span style=\"color:blue\">TT</span>'); 
    data[0]=data[0].replace('GG','<span style=\"color:green\">GG</span>'); 
    data[1]=data[1].replace('CC','<span style=\"color:red\">CC</span>'); 
    data[1]=data[1].replace('TT','<span style=\"color:blue\">TT</span>'); 
    data[1]=data[1].replace('GG','<span style=\"color:green\">GG</span>'); 
    $('td:eq(0)', row).html(data[0]); 
    $('td:eq(1)', row).html(data[1]); 
    }" 
), dom = 't')) 

enter image description here

+0

Carl에게 감사드립니다. 그러나 제 상황은 "TAG"와 같은 검색어/모티프가 하드 코딩되거나 다중 선택 필터에 제공되며 각각의 검색어/주제는 다른 fg 색상 (또는 다른 fg 및 bg로 강조 표시되어야합니다. 색깔). 이것은 Excel-VBA에서 사소한 속임수 였지만 R로 구현할 수 없었습니다. – RanonKahn

+0

질문을 수정하고 VBA 예제를 포함 할 수 있다는 것을 이해하지 못합니다. – Carl

+0

질문을 업데이트했습니다. – RanonKahn

1

약간의 조정 선택한 문자열의 나 같은 사람에게 유용 할 수 있습니다.

library(DT) 
set.seed(1986) 
x <- vector() 
create fake dna or rna sequence (it's been a while since I took bio) 
for (i in 1:10) { 
x[i] <- paste0(sample(c("A","G","T","C"),25,replace=TRUE), collapse="") 
} 
dim(x) <- c(5,2) 

datatable(x, options = list(rowCallback=JS(
    "function(row,data) { 
    data[0] = data[0] .replace(/GA/g,'<span style=\"color:red\">GA</span>'); 
    data[0] = data[0] .replace(/TT/g,'<span style=\"color:blue\">TT</span>'); 
    data[0] = data[0] .replace(/TC/g,'<span style=\"color:green\">TC</span>'); 
    data[1] = data[1] .replace(/GA/g,'<span style=\"color:red\">GA</span>'); 
    data[1] = data[1] .replace(/TT/g,'<span style=\"color:blue\">TT</span>'); 
    data[1] = data[1] .replace(/TC/g,'<span style=\"color:green\">TC</span>'); 
    $('td:eq(0)', row).html(data[0] ); 
    $('td:eq(1)', row).html(data[1] ); 
    }" 
), dom = 't'))