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)

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 )

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)

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.listaçı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
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.

nasıl yazı tipi boyutu konteyner boyut...
Nasıl kalın yazı tipi stilini ayarlama...
Slash ile CSS yazı tipi boyutu...
Nasıl UİNavigationBar iOS5 görünümünü ...
Yazı tipi Sınır CSS?...