ص التعبير العادي:استبدل قائمة السلسلة بأكملها بمعلومات أكثر تحديدا

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

  •  21-12-2019
  •  | 
  •  

سؤال

إذا كان لدي بيانات مع متغير فئوي يحتوي على عناصر مثل "Q7", "Q2", ، إلخ.، كيف يمكنني استبداله بـ "7 Queen", "2 Queen", ، إلخ.?

هل كانت مفيدة؟

المحلول

بالنسبة للمبتدئين ، ستحصل على أقصى استفادة من طرح سؤال إذا قمت أيضا بتضمين الرمز لما جربته بالفعل.هكذا قال...

ربما لا تكون الطريقة الأكثر فعالية لحل هذه المشكلة لمجموعات البيانات الكبيرة ، ولكن يبدو أن هاتين الطريقتين تعملان بشكل جيد على مثالك. example(strsplit) لديه وظيفة عكس سلسلة لطيفة يمكننا استخدامها.

> strReverse <- function(x)
      sapply(lapply(strsplit(x, NULL), rev), paste, collapse = "")

> strg <- c("Q7", "Q2")
> GS <- gsub("Q", strReverse(" Queen"), strg)
> strReverse(GS)
[1] "7 Queen" "2 Queen"

طريقة أخرى هي استخدام paste

> S <- paste0(strReverse(strg), "ueen")
> gsub("Q", " Q", S)
[1] "7 Queen" "2 Queen"

نصائح أخرى

التعبير العادي

(Q)(\d)

استبدال التعبير العادي

$2 Queen

Regular expression visualization

ديبوجكس ديمو

الوصف

1st Capturing group (Q)
    Q matches the character Q literally (case insensitive)
2nd Capturing group (\d)
    \d match a digit [0-9]
g modifier: global. All matches (don't return on first match)
i modifier: insensitive. Case insensitive match (ignores case of [a-zA-Z])

ملاحظة: ستحتاج إلى واحدة من هذه لكل حرف

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