我的資料如下:
dat <- list(c(0, 25, 100, 250, 500, 1000, 1e 06))
我只是想1000000用字串 value 替換 value "Infinity"。雖然:
dat[1]
# [[1]]
# [1] 0 25 100 250 500 1000 1000000
dat[[1]
# [1] 0 25 100 250 500 1000 1000000
如果我嘗試:
gsub(1000000, "Infinity", dat[[1]])
沒發生什么事。為什么在這種情況下什么都沒有發生,正確的方法是什么?
uj5u.com熱心網友回復:
您需要將 RHSgsub呼叫分配給 LHS 變數,可能是串列中的向量本身。但是,鑒于您的初始向量包含數值,您應該在這里使用相等:
dat[[1]][dat[[1]] == 1000000] <- "Infinity"
dat
[[1]]
[1] "0" "25" "100" "250" "500" "1000" "Infinity"
uj5u.com熱心網友回復:
我們可以使用rapply. rapply是 lapply 的遞回版本,在結果結構方面具有靈活性(how = "..")。看?rapply
rapply(dat,function(x) ifelse(x==1000000,"Infinity",x), how = "replace")
[[1]]
[1] "0" "25" "100" "250" "500" "1000" "Infinity"
uj5u.com熱心網友回復:
如果你真的要使用gsub,你需要設定fixed = TRUE。
dat <- list(c(0, 25, 100, 250, 500, 1000, 1e 06))
dat[[1]] <- gsub(1000000, "Infinity", dat[[1]], fixed = T)
dat
[[1]]
[1] "0" "25" "100" "250" "500" "1000"
[7] "Infinity"
uj5u.com熱心網友回復:
另一個使用replaceand的選項lapply(雖然rapply是更好的選擇lapply):
lapply(dat, function(x) replace(x, x == 1000000, "Infinity"))
輸出
[[1]]
[1] "0" "25" "100" "250" "500" "1000" "Infinity"
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/470719.html
上一篇:如何在GoogleColabInput中設定資料型別?
下一篇:如何在名稱串列中找到最長的名稱?
