كيفية استخدام التطبيق ، القط والطباعة ، دون الحصول على خالية

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

  •  30-09-2019
  •  | 
  •  

سؤال

أحاول استخدام CAT () كوظائف داخل تطبيق (). أنا استطيع تقريبيا اجعل R افعل ما أريد ، لكنني أحصل على بعض الفهود المربكة للغاية في نهاية العودة. إليكم مثال سخيف ، لتسليط الضوء على ما أحصل عليه.

val1 <- 1:10
val2 <- 25:34
values <- data.frame(val1, val2)
apply(values, 1, function(x) cat(x[1], x[2], fill=TRUE))

هذا "يعمل" في ذلك R يقبله ويستمر ، لكنني لا أفهم النتائج.

> apply(values, 1, function(x) cat(x[1], x[2], fill=TRUE))
1 25
2 26
3 27
4 28
5 29
6 30
7 31
8 32
9 33
10 34
NULL

لكنني أريد أن أحصل على:

> apply(values, 1, function(x) cat(x[1], x[2], fill=TRUE))
1 25
2 26
3 27
4 28
5 29
6 30
7 31
8 32
9 33
10 34

لذا ، كيف يمكنني إزالة هذا الفرق النهائية؟

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

المحلول

الفارغ هو المترجم R طباعة قيمة التعبير الذي كتبته - التطبيق. يمكنك إما تعيينه في مكان ما:

junk = apply(values, 1, function(x) cat(x[1], x[2], fill=TRUE))

في هذه الحالة لن يتم طباعتها ، أو لفها في "غير مرئية":

invisible(apply(values, 1, function(x) cat(x[1], x[2], fill=TRUE)))

لاحظ أنه فقط عند تشغيل هذا بشكل تفاعلي ، يتم طباعة كل سطر ، إذا كان في وظيفة لن تراها.

نصائح أخرى

هل تحتاج حقا apply() لحلق من خلال المحتوى الخاص بك؟

> print(values, row.names=FALSE)
 val1 val2
    1   25
    2   26
    3   27
    4   28
    5   29
    6   30
    7   31
    8   32
    9   33
   10   34

كما أشار ديرك ، فإن هذه ليست الطريقة لطباعة الشيء في R. عادةً ما تقوم بتعيين النتيجة لمتغير ثم طباعته. لا توجد آثار جانبية ، لذلك القول.

تنبع مشكلتك من وظائف CAT ، التي تطبع إلى المحطة كأثر جانبي ، ولكنها تُرجع.

محاولة

a <- cat("blabla\n")  
a

إذا كنت ترغب حقًا في استخدام التقديم للطباعة ، فهناك حلان. التفاف في مكالمة غير مرئية

invisible(apply(values, 1, function(x) invisible(cat(x[1], x[2], fill=TRUE))))

أو فقط تعيين النتيجة (خالية) لقيمة مؤقتة

t <- apply(values, 1, function(x) invisible(cat(x[1], x[2], fill=TRUE)))
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top