Tek aralıklı `menü yazı tipi belirtin` | Netgez.com
SORU
8 ŞUBAT 2012, ÇARŞAMBA


Tek aralıklı `menü yazı tipi belirtin`

Dili: R. Soru:menu(..,graphics=T) fonksiyon için sabit genişlikli yazı tipi belirtebilir miyim?

Açıklama:

Geçenlerde bir kullanıcı veri bir çerçeve bir satır etkileşimli olarak seçmek için nasıl this question sordu:

df <- data.frame(a=c(9,10),b=c('hello','bananas'))
df.text <- apply( df, 1, paste, collapse=" | " )
menu(df.text,graphics=T)

enter image description here

Sıraya | istiyorum. Şu anda yok; yeterince adil, aynı genişlik için sütun dışarı yastıklı görmedim. format aynı genişlikte (daha sonra otomatik olarak yüklenecektir başına sütun genişliğini belirlemek için kod yazmak, ama şimdilik bunu görmezden izin vereceğim) her sütun için kullanıyorum o yüzden:

df.padded <- apply(df,2,format,width=8)
df.padded.text <- apply( df.padded, 1, paste, collapse=" | ")
menu( df.padded.text,graphics=T )

enter image description here

Hala zayıf. Eğer df.padded, bakıyorum ama olsun:

> df.padded
     a            b           
[1,] " 9        " "hello     "
[2,] "10        " "bananas   "

Her hücre kesinlikle yastıklı aynı uzunlukta.

Bunun nedeni, bu benim sistem zaten, Linux üzerinde () için varsayılan yazı tipi genişliği sabit değil, çünkü muhtemelen.

Benim sorum ise şu: menu(..,graphics=T) fonksiyon için sabit genişlikli yazı tipi belirtebilir miyim?

Güncelleme

@graphics=T 13 *bakarsanız sırayla* 16 *aramalar* 15*, onu çağıran RichieCotton fark ettim.

Bunun için tcltk seçenekleri değiştirmek zorunda kalacağım gibi görünüyor. @Jverzani:

library(tcltk)
tcl("option", "add", "*Listbox.font", "courier 10")
menu(df.padded.text,graphics=T)

enter image description here

Verilen bu menu(...,graphics=T) çağrı tcltk::tk_select.list graphics DOĞRU, bence bu uygulanabilir bir seçenek, herhangi bir dağıtım olacağını yapabileceğini gösteren grafik menu ilk yer de var tcltk o zamandan beri ihtiyacı için çağrı tk_select.list.

(Bir kenara, bana seçeneği *Listbox.font! çağrıldı tcl('option','add',...) dursun için ipucu verecek belgelerinde bir şey bulmak) yapamam

Başka bir güncelleme-- select.list menu kod ve Windows (veya eğer .Platform$GUI=='AQUA' -- Mac ise?) çıkıyor, daha yakından bakmak vardı tcltk::tk_select.list hiç de değil, ve sadece bazı iç kod yerine. '*Listbox.değiştirme yani'bu etkilemez. font

Sanırım ben sadece:

  • eÄŸer tcltk varsa, yükü, *Liste ayarlayın.courier yazı tipi ve tcltk::tk_select.list açıkça kullanın
  • eÄŸer orada deÄŸil eÄŸer doÄŸru deÄŸilse, menu(...,graphics=T) en az bir grafik arayüzü tek aralıklı olmayacak ama hiç yoktan iyidir) almaya çalışın
  • eÄŸer bu da baÅŸarısız olursa, o zaman sadece kesinlikle iÅŸe hangi menu(...,graphics=F), dönüş.

Teşekkürler.

CEVAP
12 HAZİRAN 2012, Salı


Dolgu için başka bir yaklaşım

na.pad <- function(x,len){
    x[1:len]
}

makePaddedDataFrame <- function(l,...){
    maxlen <- max(sapply(l,length))
    data.frame(lapply(l,na.pad,len=maxlen),...)
}

x = c(rep("one",2))
y = c(rep("two",10))
z = c(rep("three",5))

makePaddedDataFrame(list(x=x,y=y,z=z))

na.pad() R fonksiyonu otomatik olarak var olmayan öğeleri dizin çalışırsanız NAs ile bir vektör pad gerçeğini patlatır.

makePaddedDataFrame() sadece en uzun olanı bulur ve geri kalanı eşleşen bir uzunluğa kadar.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • LavcoPriceTech

    LavcoPriceTe

    21 AÄžUSTOS 2010
  • Titan Lee Hai

    Titan Lee Ha

    14 Temmuz 2008