كيف تحصل على فهرس رسالة من قائمة AZ؟
سؤال
أريد الحصول على فهرس رسالة معينة ، على سبيل المثال
> match(LETTERS,"G")
[1] NA NA NA NA NA NA 1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
يعطيني أن الرسالة موجودة ، لكنني أريد أن تعود 6 في هذه الحالة للعنصر السادس من القائمة.
المحلول
أو which
:
which(LETTERS=="G")
ال which
تم تصميم الوظيفة خصيصًا لهذا الغرض:
أعط المؤشرات "الحقيقية" لكائن منطقي ، مما يسمح بمؤشرات الصفيف.
ال which
يمكن أن تعيد الوظيفة أيضًا الفهرس المنطقي TRUE
القيم الموجودة في المصفوفة عن طريق تعيين وسيطة arr.ind إلى True (هذا مفيد للغاية).
> which(matrix(LETTERS, nrow=5)=="G")
[1] 7
> which(matrix(LETTERS, nrow=5)=="G", arr.ind=TRUE)
row col
[1,] 2 2
قد ترغب أيضًا في القراءة هذا المنشور الأخير للمدونة من سيث فالكون حيث يتحدث عن تحسينه في C.
نصائح أخرى
فقط للإشعار: أعتقد أنك تريد
match("G", LETTERS)
# [1] 7
فوائد هذا الحل grep
أو which
هل يمكنك استخدامه في متجه الحروف:
match(c("S","T","A","C","K","O","V","E","R","F","L","O","W"), LETTERS)
# gives:
# [1] 19 20 1 3 11 15 22 5 18 6 12 15 23
محاولة grep
:
R> grep("G", LETTERS)
[1] 7
لا تنتمي إلى StackOverflow