هل تريد تقسيم ناقل الحرف إلى أحرف فردية؟(عكس اللصق أو stringr::str_c)
-
21-12-2019 - |
سؤال
سؤال أساسي بشكل لا يصدق في لغة R ولكن الحل غير واضح.
كيفية تقسيم متجه الشخصية إلى شخصياته الفردية، أي.على العكس من paste(..., sep='')
أو stringr::str_c()
?
أي شيء أقل غموضا من هذا:
sapply(1:26, function(i) { substr("ABCDEFGHIJKLMNOPQRSTUVWXYZ",i,i) } )
"A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
هل يمكن القيام بخلاف ذلك، على سبيل المثال؟مع strsplit()
, stringr::*
او اي شيء اخر؟
المحلول
نعم، strsplit
سوف تفعل ذلك. strsplit
تقوم بإرجاع قائمة، بحيث يمكنك إما استخدامها unlist
لإجبار السلسلة على ناقل حرف واحد، أو استخدم فهرس القائمة [[1]]
للوصول إلى العنصر الأول.
x <- paste(LETTERS, collapse = "")
unlist(strsplit(x, split = ""))
# [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
#[20] "T" "U" "V" "W" "X" "Y" "Z"
أو (مع ملاحظة أنه ليس من الضروري في الواقع تسمية split
دعوى)
strsplit(x, "")[[1]]
# [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
#[20] "T" "U" "V" "W" "X" "Y" "Z"
يمكنك أيضًا الانقسام NULL
أو character(0)
لنفس النتيجة.
لا تنتمي إلى StackOverflow