r - 根据条件更改列中的值
问题描述
我必须在某个条件下将特定数量的字符添加到字符向量内的值的末尾 - 仅适用于某些列。每个值必须有 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")
}
}
}
不幸的是,这不会改变数据框中的任何内容,尽管它不会产生任何错误。我哪里做错了?
解决方案
尝试,
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"
推荐阅读
- tensorflow - 理解 Tensorflow Keras 层的计算图
- go - 遍历对数组
- javascript - 用远程文件中的 JSON 替换教程代码中的数据
- javascript - 如何将 ruby 正则表达式转换为 javascript 正则表达式?
- authentication - 内置认证机制——API网关
- docker - 无法在 Kubernetes 上挂载 Splunk 配置 - 错误:无法读取“/opt/splunk/etc/splunk-launch.conf
- apache - 使用 docker-compose 和 dockerised apache2 在生产服务器中使用 SSL
- bash - 如何在特定字符串后从 IP:PORT 中提取端口?
- concatenation - 如何将多组列连接成几个新列?
- python - 异步下载例程中的错误处理