【问题标题】:Having R abbreviate long, user-provided character input for function argument让 R 缩写为函数参数的用户提供的长字符输入
【发布时间】:2017-05-15 19:04:42
【问题描述】:

背景:

我有一个名为 abs 的 R 函数。该函数只有一个参数main.name。此函数的用户在引号中提供字符类型名称(例如,"Length of Residence"),函数abs 使用此用户提供的名称作为简单绘图的主标题。

问题

用户可能会提供一个很长的名称(例如,"Oral Language Ability of Minors")。为了克服这个问题:

我想知道是否有一种方法用户提供 main.name 超过 2 个单词时,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")

【问题讨论】:

  • 您可能会发现内置的abbreviate 函数很有用。如果您想要更大的灵活性,您可以创建自己的函数。例如,仅捕获每个单词的第一个字母:paste(sapply(strsplit(x, " "), substr, 1, 1), collapse=""),其中x 是您的字符串。

标签: r function text character


【解决方案1】:

你可以这样做

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"

【讨论】:

    猜你喜欢
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 2012-09-19
    • 2016-03-12
    相关资源
    最近更新 更多