如何有条件地将元素添加到 R 中字符的开头?
How can I add an element to the beginning of a character in R conditionally?
我是编码新手,正在学习 R 的基础知识。我有一个在 Excel 中制作的数据集。它们是邮政编码;但是,导出时会自动删除以 0 开头的邮政编码。我正在尝试遍历并将 0 添加回去。
我的想法是,假设邮政编码 w/o 初始零的长度为 4 个字符,我只是找到长度为 4 的迭代,然后在前面添加一个 0,但我不是得到正确的答案。
zip<-c(61415, 19087, 63122, 3104, 1938)
zip<-as.character(zip)
>for(i in zip){
+
+if(nchar(i)==4){
+ paste0("0",i)
+ }
+ }
NULL
我应该得到:
"61415", "19087", "63122", "03104", "01938"
可以通过将数字 vector
格式化为 sprintf
来完成
sprintf("%05d", zip)
#[1] "61415" "19087" "63122" "03104" "01938"
另一种选择是str_pad
library(stringr)
str_pad(zip, pad = "0", width = 5)
#[1] "61415" "19087" "63122" "03104" "01938"
注意:这两个选项都不需要任何循环或任何条件语句
数据
zip <- c(61415, 19087, 63122, 3104, 1938)
如果"zip"是字符串,也可以试试:
ifelse(nchar(zip) != 5, paste0("0", zip), zip)
[1] "61415" "19087" "63122" "03104" "01938"
如果 "zip" 是一个数值向量:
formatC(zip, width = 5, format = "d", flag = "0")
我是编码新手,正在学习 R 的基础知识。我有一个在 Excel 中制作的数据集。它们是邮政编码;但是,导出时会自动删除以 0 开头的邮政编码。我正在尝试遍历并将 0 添加回去。
我的想法是,假设邮政编码 w/o 初始零的长度为 4 个字符,我只是找到长度为 4 的迭代,然后在前面添加一个 0,但我不是得到正确的答案。
zip<-c(61415, 19087, 63122, 3104, 1938)
zip<-as.character(zip)
>for(i in zip){
+
+if(nchar(i)==4){
+ paste0("0",i)
+ }
+ }
NULL
我应该得到:
"61415", "19087", "63122", "03104", "01938"
可以通过将数字 vector
格式化为 sprintf
sprintf("%05d", zip)
#[1] "61415" "19087" "63122" "03104" "01938"
另一种选择是str_pad
library(stringr)
str_pad(zip, pad = "0", width = 5)
#[1] "61415" "19087" "63122" "03104" "01938"
注意:这两个选项都不需要任何循环或任何条件语句
数据
zip <- c(61415, 19087, 63122, 3104, 1938)
如果"zip"是字符串,也可以试试:
ifelse(nchar(zip) != 5, paste0("0", zip), zip)
[1] "61415" "19087" "63122" "03104" "01938"
如果 "zip" 是一个数值向量:
formatC(zip, width = 5, format = "d", flag = "0")