2013-01-16 59 views
2

說我有以下功能:多評論()用於功能屬性

sqrt_x = function(x) { 
    sqrtx = x^0.5 
    return(list("sqrtx" = sqrt)) 
} 
attr(sqrt_x, "comment") <- "This is a comment to be placed on two different lines" 

如果我鍵入

comment(sqrt_x) 

我得到

[1] "This is a comment to be placed on two different lines" 

我想要的東西,但是,該評論是在兩個不同的行上返回的(它也可以是更多的行和不同的評論元素,任何想法都可以使用)

+0

'comment(sqrt_x)< - 「我的評論」是一個更清晰的方式來指定評論。 –

+0

thx,但是,它不會給我更多的內線, – Toby

回答

3

由於Andrie說:你需要插入換行符。

如果您不想手動指定換行符的位置,則可以使用strwrap在方便的點創建斷點,以便字符串不超過指定的寬度。

msg <- strwrap("This is a comment to be placed on two different lines", width = 20) 
cat(msg, sep = "\n") 
# This is a comment 
# to be placed on two 
# different lines 

一個完整的解決方案可能類似於:

#Add comment as normal 
comment(sqrt_x) <- "This is a comment to be placed on two different lines" 

#Display using this function 
multiline_comment <- function(x, width = getOption("width") - 1L) 
{ 
    cat(strwrap(comment(x), width = width), sep = "\n") 
} 

multiline_comment(
    sqrt_x, 
    20 
) 
+0

好吧,我不想在我的控制檯輸入cat(comment(sqrt_x)),這有點尷尬。我希望源文件有一些快速的註釋形式,以便其他人可以快速鍵入:註釋(函數)並獲得快速簡單的幫助文本信息。不過,我希望它有一些結構。 – Toby

+0

編輯是偉大的,這是我真正要求。這是一個解決方法,但內部使用perfekt。 – Toby

2

您可以使用\n來插入換行符。該cat方法這顯示在你想要的方式:

attr(sqrt_x, "comment") <- "This is a comment to be placed on two\ndifferent lines" 
cat(comment(sqrt_x)) 

This is a comment to be placed on two 
different lines 
0

這是一個黑客位的,也許不是你想要的,但如果你提供了一個多元素character矢量,並且行的長度足以使R的默認格式化決定它們應該在多行上,您可以得到您想要的:

comment(sqrt_x) <- c("This is a comment      ", 
        "to be placed on two different lines") 
comment(sqrt_x) 
## [1] "This is a comment      " 
## [2] "to be placed on two different lines" 

你可以自動使用format墊:

comment(sqrt_x) <- format(c("This is a comment", 
          "to be placed on two different lines"), 
          width=50) 

(與其他地方一樣顯示你也可以使用strwrap()分手一個長字符串 分成部分)

如果你絕對絕望有這個你不喜歡多餘的空格,你可能掩蓋內置的東西,如@ RichieCotton的多版本comment功能:

comment <- function(x,width = getOption("width") - 1L) { 
    cat(strwrap(base::comment(x), width = width), sep = "\n") 
} 

但我這可能是個壞主意。