2017-05-15 19 views
1

背景のために長い間、ユーザー提供の文字入力を省略持つ:

私はabsと呼ばれるRの機能を持っています。この関数にはmain.nameという引数が1つしかありません。この関数のユーザーは、文字タイプ名を二重引用符で囲みます(例:"Length of Residence")。関数absは、このユーザー提供の名前を単純なプロットのメインタイトルとして使用します。Rは、関数の引数

質問

ユーザーは非常に長い名前を提供することができる(例えば、"Oral Language Ability of Minors")。この問題を解決するには、次の

ユーザーが2つの以上の単語であるmain.name、Rは、各単語の最初の文字を選択し、その「略」になるだろうを提供方法があれば、私は思っていましたmain.name

例えば、このような収差の後、"Oral Language Ability of Minors"は "OLAOM"になります。

abs = function (main.name) { 

plot(rnorm(1e2), main = main.name) 

} 

abs ("Oral Language Ability of Minors") 
+1

ような何かを行うことができます。より柔軟にしたい場合は、独自の関数を作成することができます。たとえば、各単語の最初の文字をキャプチャするには、 'paste(sapply(strsplit(x、" ")、substr、1、1)、collapse =" ")'、 'x'は文字列です。 – eipi10

答えて

2

あなたは組み込みの `abbreviate`機能が便利かもしれません。この

rename = function(string){ 
    tmp = strsplit(string, " ") 

    if(length(tmp[[1]]) > 2){ 
    return(toupper(paste(unlist(lapply(tmp, substring, 1, 1)),collapse = ""))) 
    }else{ 
    return(paste(unlist(tmp), collapse = " ")) 
    } 
} 

> rename("Oral Language Ability of Minors") 
[1] "OLAOM" 

> rename("Oral Language") 
[1] "Oral Language" 
関連する問題