Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 不允许使用NA_R_Na_Subscript - Fatal编程技术网

R 不允许使用NA

R 不允许使用NA,r,na,subscript,R,Na,Subscript,我是R和发帖新手,因此如果我错过了一些协议,请原谅,但我的问题是: 我正在创建临时向量,以便在需要时添加“0”。我最终想要一个由12位数字组成的值,如果不是这样,我将添加我需要的“0”的数量。但是,在尝试使用适当的零粘贴临时索引后,我收到以下消息: colnames(ALLMBRS) <- c("SSN","tracts","GeoBlock","GeoCodeBlck","GeoMatch") #TA Members Tracts #Remove special characters a

我是R和发帖新手,因此如果我错过了一些协议,请原谅,但我的问题是: 我正在创建临时向量,以便在需要时添加“0”。我最终想要一个由12位数字组成的值,如果不是这样,我将添加我需要的“0”的数量。但是,在尝试使用适当的零粘贴临时索引后,我收到以下消息:

colnames(ALLMBRS) <- c("SSN","tracts","GeoBlock","GeoCodeBlck","GeoMatch") #TA Members Tracts
#Remove special characters and decimals
tmp1 <- str_replace_all(ALLMBRS$GeoCode,"[[:punct:]]","")
#Temporary Vector of ALLMBRS
tmp2 <- tmp1
#Vectors of Indices used to add 0's
add1 <- str_length(ALLMBRS$tracts) == 11
add2 <- str_length(ALLMBRS$tracts) == 10
add3 <- str_length(ALLMBRS$tracts) == 9
add4 <- str_length(ALLMBRS$tracts) == 8
add5 <- str_length(ALLMBRS$tracts) == 7
#Paste temporary vector indices into temporary vector
tmp2[add1] <- paste(tmp2[add1],"0",sep="")
tmp2[add2] <- paste(tmp2[add2],"00",sep="")
tmp2[add3] <- paste(tmp2[add3],"000",sep="")
tmp2[add4] <- paste(tmp2[add4],"0000",sep="")
tmp2[add5] <- paste(tmp2[add5],"00000",sep="")
我希望所有值都包含12位数字。所以我想看看

[1]000000000000 
以及

[12]900348080020

Error Message: Error in tmp2[add1] <- paste(tmp2[add1],"0",sep = ""):
NAs are not allowed in subscripted assignments
[12]900348080020

错误消息:tmp2[add1]中出错您可以使用
stru pad
from
stringr
填充字符串。将
pad
参数设置为
“0”

>x库(stringr)
>str_pad(x,12,pad=“0”)
# [1] "000000000000" "000000000000" "000000000000" "000000000000"
# [5] "000000000000" "000000000000" "000000000000" "360010146121"
# [9] "720210310133" "000000000000" "517100023001" "090034808002"
#[13] "250158202021" "250158211004" "250138125003" "290470203002"
#[17] "250138124031" "250158202033" "250138019012" "250138112002"
更新:对于包含任何NA值的向量,您可以执行以下操作

x[!is.na(x)] <- str_pad(x[!is.na(x)], 12, pad = "0")
x[!is.na(x)]y[!is.na(y)]y
#[1]“000000000000”NA“000000000123”“00000000068”

谢谢你,Richard。我收到一条错误消息:“无效的时间值”。这是因为我有NAs作为一些值吗?@user3067851我刚刚试过,是的,似乎是这样。尝试
x[!is.na(x)]
> x <- c("0", "0", "0", "0", "0", "0", "0", "360010146121",
         "720210310133", "0", "517100023001", "90034808002",
         "250158202021", "250158211004", "250138125003", 
         "290470203002", "250138124031", "250158202033",
         "250138019012", "250138112002")
> library(stringr)
> str_pad(x, 12, pad = "0")
# [1] "000000000000" "000000000000" "000000000000" "000000000000"
# [5] "000000000000" "000000000000" "000000000000" "360010146121"
# [9] "720210310133" "000000000000" "517100023001" "090034808002"
#[13] "250158202021" "250158211004" "250138125003" "290470203002"
#[17] "250138124031" "250158202033" "250138019012" "250138112002"
x[!is.na(x)] <- str_pad(x[!is.na(x)], 12, pad = "0")
> y <- c("0", NA, "123", "68")
> y[!is.na(y)] <- str_pad(y[!is.na(y)], 12, pad = "0")
> y
# [1] "000000000000" NA             "000000000123" "000000000068"