대형 데이터 프레임 (여러 100k 행)의 문자열 열에 대한 대체를 수행하고 있으며, 긴 루틴 과정에서 여러 번해야합니다 . 이 방법을 벡터화 된 방식으로 작성하려고하지만이를 수행 할 방법을 찾을 수는 없습니다. 지금은 전 길이 루프를 사용해야하며 매번 몇 분씩 걸려서 각 행을 따로 따로 진행해야합니다.루프를 사용하지 않고 많은 데이터 프레임 행에서 문자열 바꾸기
내가 기능적으로 할 수없는 이유는 각 행 값에 대해 내가 정확히 어떻게 str_extract
(또는 grepl
) 명령을 참조 할 수 있어야하는지하는 것 같습니다./o 색인. (목표는 6 자리 밖으로 패드에 각 가변 길이 문자열의 주요 수치 부분을 공의를 사용하는 것입니다. 항목이 "1234XYZ"처럼 보일 수 있습니다.) 분명히
for (i in 1:nrow(df)) {
df$A[i] <- gsub("^[[:digit:]]+",
paste(paste(rep(0,6-nchar(str_extract(df$A[i],"^[[:digit:]]+"))), collapse=""),
str_extract(df$A[i], "^[[:digit:]]+"), collapse=""), df$A[i])
}
내가 순진로 시도한 다음,
df$A <- gsub("^[[:digit:]]+",
paste(paste(rep(0,6-nchar(str_extract(df$A,"^[[:digit:]]+"))), collapse=""),
str_extract(df$A, "^[[:digit:]]+"), collapse=""), df$A)
이는 루프없이 수행 할 수 있습니다 str_extract
는 DF의 각각의 레코드를 가지는 벡터를 반환하기 때문에 "벡터화 된 버전은"작동하지 않는 이유는 무엇입니까?
당신이 당신의 data.frame'df'와의 약간을 포함 할 수 있습니다 작동 생각? 'dput (head (df))'. 그렇지 않으면 코드가 재생성되지 않고 우리는별로 도움이되지 않습니다. – Justin