ص التعبير العادي:استبدل قائمة السلسلة بأكملها بمعلومات أكثر تحديدا
سؤال
إذا كان لدي بيانات مع متغير فئوي يحتوي على عناصر مثل "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
الوصف
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])
ملاحظة: ستحتاج إلى واحدة من هذه لكل حرف
لا تنتمي إلى StackOverflow