我正在做一個大數據框(幾個100k行)中的字符串列的替換,而且我必須在冗長的例程。我想用矢量化的方式寫這個,但是不能找出一個方法去做。目前,我必須使用全長循環,每次花費幾分鐘時間,分別逐行瀏覽每一行。在許多數據幀行中替換字符串而不使用循環
我不能在功能上做到這一點的原因似乎是,對於每一行值,我需要能夠在str_extract
(或grepl
)命令中明確引用它,但我不知道如何執行w/o索引。 (目的是使用0以墊的每個可變長度字符串的前導數字部分出到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])
}
顯然下文中,我天真地試圖作爲在「矢量版」,不能因爲str_extract
返回一個向量與DF的每一行的條目:
df$A <- gsub("^[[:digit:]]+",
paste(paste(rep(0,6-nchar(str_extract(df$A,"^[[:digit:]]+"))), collapse=""),
str_extract(df$A, "^[[:digit:]]+"), collapse=""), df$A)
可以這樣沒有環辦?
您可以包括一個小的data.frame'df'的工作嗎? 'dput(頭(DF))'。否則你的代碼是不可重複的,我們不能幫忙。 – Justin