在某种情况下,我必须在字符向量内部的值的末尾添加特定数量的字符-仅适用于某些列。 每个值必须具有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")
}
}
}
不幸的是,尽管它不会产生任何错误,但它不会改变数据框中的任何内容。我哪里做错了?
答案 0 :(得分:2)
尝试
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"
答案 1 :(得分:0)
这是base R
replace(input_vector,grep("A.",input_vector),strtrim(paste0(input_vector,"00000"),5)[grep("A.",input_vector)])