【问题标题】:Can I rename vector elements based on their nchar length and their current values using R?我可以根据向量元素的 nchar 长度和使用 R 的当前值重命名向量元素吗?
【发布时间】:2021-01-30 04:37:57
【问题描述】:

我有 6 个向量值

vec<-c("Col1","Col2islonger","Col3isabitlonger","Col4isless","Col5willbelongest")

我跑

nchar(vec)

我的结果是

4,12,16,10,17

基于这些值,我想运行条件语句或 for 循环,以更好地根据列的长度和当前值重命名列。例如

如果 nchar(vec) 小于或等于 10,则保持名称不变。如果它大于 10,请确保重命名的元素采用前 9 个值并跳到最后一个。

newvec<- c("Col1","Col2islonr","Col3isabir","Col4isless","Col5willbt")

【问题讨论】:

    标签: r conditional-statements string-length nchar


    【解决方案1】:

    我们可以使用sub 修剪vec。我们使用“vec”(“i1”)的字符数创建一个逻辑向量。使用它,我们更新那些大于 10 个字符的元素,以删除第 10 个和最后一个字符之间的字符 sub 并更新它

    i1 <- nchar(vec)  > 10
    vec[i1] <-  sub("^(.{1,9}).*(.)", "\\1\\2", vec[i1])
    

    -输出

    vec
    #[1] "Col1"       "Col2islonr" "Col3isabir" "Col4isless" "Col5willbt"     
    

    【讨论】:

      【解决方案2】:

      试试这个:

      #Data
      vec<-c("Col1","Col2islonger","Col3isabitlonger","Col4isless","Col5willbelongest")
      #Rename
      vec2 <- ifelse(nchar(vec)<=10,vec,paste0(substr(vec,1,9),substr(vec,nchar(vec),nchar(vec))))
      

      输出:

      [1] "Col1"       "Col2islonr" "Col3isabir" "Col4isless" "Col5willbt"
      

      【讨论】:

      • 工作完美!!
      猜你喜欢
      • 2014-06-02
      • 2021-12-26
      • 2019-08-23
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-11
      相关资源
      最近更新 更多