Strsplit (“A, B. C”, c (“,”, “.”)) Neden “. "?
Belgeleri açıkça yanlış anlıyorum, bu yüzden bunu hızlı yapacağım. Benim anlayışıma göre strsplit("A, B . C",c(", ",". ")), "A, B. C" yi "" nin tüm oluşumlarını aramak ve onu koşmuşum gibi ayırmak strsplit("A, B . C",", ")ve sonra bunun çıktısını hala bir dize biçiminde almak ve sanki Koştum strsplit([tidied output],". "). Başka bir deyişle, beklenen çıktım olacaktır list(c("A","B ","C")).
Bu kodu gerçekten çalıştırdığımda, "." İşaretinin kaldırılmadığını gösteren aşağıdaki sonucu alıyorum. Ne yanlış gitti?
> strsplit("A, B . C",c(", ",". "))
[[1]]
[1] "A" "B . C"
Normal ifade sorunu olmadığı görülüyor. Örneğin, ayarın fixed=TRUEnormal ifade eşleşmesini devre dışı bırakması gerekiyor, ancak çıktımı değiştirmiyor:
> strsplit("A, B . C",c(", ",". "),fixed = TRUE)
[[1]]
[1] "A" "B . C"
Yanıtlar
Bir vektör verildiğinde tam olarak splitbu şekilde çalışmaz, bkz. F.ex
strsplit(c("A, B . C", "A, B . C"), c(", ", ". "), fixed=TRUE )
# [[1]]
# [1] "A" "B . C"
# [[2]]
# [1] "A, B " "C"
Döndürüldü x. Eğer xuzunluk biri, sadece ilk splitkullanılacaktır.
Daha fazla argüman eklemenin en kolay yolu split, bunu normal bir normal ifade olarak ele almaktır, ör.
strsplit("A, B . C", "[.,] " )
# [[1]]
# [1] "A" "B " "C"