هل تريد تقسيم ناقل الحرف إلى أحرف فردية؟(عكس اللصق أو stringr::str_c)

StackOverflow https://stackoverflow.com//questions/23028885

سؤال

سؤال أساسي بشكل لا يصدق في لغة 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) لنفس النتيجة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top