سؤال

أريد الحصول على فهرس رسالة معينة ، على سبيل المثال

>  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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top