首页 > 解决方案 > 根据条件更改列中的值

问题描述

我必须在某个条件下将特定数量的字符添加到字符向量内的值的末尾 - 仅适用于某些列。每个值必须有 5 个字符的固定长度,如果当前值小于 5,我必须添加零直到达到最大长度 - 仅当值的第一个字符是 ie 时。字母“A”。

input_vector <- c("ABC", "ZZX", "B", "AILK") 
desirable_output <- c("ABC00", "ZZX", "B", "AILK0") 

我对 R 世界还很陌生,我只尝试编写如下笨重的代码:

example_df<- data.frame(Col1= 1:11, Col2= 2:22, Col3= 3:33, Col4= 6:66)
index_values_of_columns<- c(1, 2, 4)
for (index_value in index_values_of_columns){
  for (value in example_df[[index_value]]){
    firstletter<-str_extract(value, "^.{1}")
    if (!is.na(firstletter) && firstletter == "1"){
      value<-str_pad(value, 5, side="right", pad="0")
    }
  }
}

不幸的是,这不会改变数据框中的任何内容,尽管它不会产生任何错误。我哪里做错了?

标签: r

解决方案


尝试,

input_vector[substring(input_vector, 1, 1) == 'A'] <- str_pad(input_vector[substring(input_vector, 1, 1) == 'A'], 5, side = "right", pad = "0")
input_vector
#[1] "ABC00" "ZZX"   "B"     "AILK0"

推荐阅读