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

  • Amir Parmar

    Amir Parmar

    25 Kasım 2010
  • Dave Wallace

    Dave Wallace

    27 Kasım 2007
  • DeAdPiXel6667

    DeAdPiXel666

    2 Ocak 2010