2017-08-01 74 views
0

我想修改citation對象R如下修改`citation`對象`R`

cit <- citation("ggplot2") 

cit$textVersion 
#[1] "H. Wickham. ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York, 2009." 

cit$textVersion <- "Hadley Wickham and Winston Chang (2016). ggplot2: Create Elegant Data Visualisations Using 
    the Grammar of Graphics. R package version 2.2.1." 

但沒有改變。

cit$textVersion 
#[1] "H. Wickham. ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York, 2009." 

如果我們檢查的cit結構,現在有兩個textVersion屬性。如何修改原來的textVersion

str(cit) 
List of 1 
$ :Class 'bibentry' hidden list of 1 
    ..$ :List of 6 
    .. ..$ author :Class 'person' hidden list of 1 
    .. .. ..$ :List of 5 
    .. .. .. ..$ given : chr "Hadley" 
    .. .. .. ..$ family : chr "Wickham" 
    .. .. .. ..$ role : NULL 
    .. .. .. ..$ email : NULL 
    .. .. .. ..$ comment: NULL 
    .. ..$ title : chr "ggplot2: Elegant Graphics for Data Analysis" 
    .. ..$ publisher: chr "Springer-Verlag New York" 
    .. ..$ year  : chr "2009" 
    .. ..$ isbn  : chr "978-0-387-98140-6" 
    .. ..$ url  : chr "http://ggplot2.org" 
    .. ..- attr(*, "bibtype")= chr "Book" 
    .. ..- attr(*, "textVersion")= chr "H. Wickham. ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York, 2009." 
    .. ..- attr(*, "textversion")= chr "Hadley Wickham and Winston Chang (2016). ggplot2: Create Elegant Data Visualisations Using\n the Grammar of Gr"| __truncated__ 
- attr(*, "mheader")= chr "To cite ggplot2 in publications, please use:" 
- attr(*, "class")= chr "bibentry" 

回答

2

A citation對象不作修改。子集操作符($[,還有$<-)是特定的,不允許輕鬆修改。這是有原因的:citation信息是寫在一個包的特定文件中,不認爲會被修改。 我不知道你爲什麼要嘗試它,但如果你真的需要,這裏是一個小黑客。

#store the class of the object, so can be reassigned later 
oc<-class(cit) 
#unclass the object to be free to modify 
tmp<-unclass(cit) 
#assign the new "textVersion" 
attr(tmp[[1]],"textVersion")<-"Hadley Wickham and Winston Chang (2016). ggplot2: Create Elegant Data Visualisations Using the Grammar of Graphics. R package version 2.2.1." 
#assign the class back 
class(tmp)<-oc 
tmp 
#To cite ggplot2 in publications, please use: 
# 
# Hadley Wickham and Winston Chang (2016). ggplot2: Create Elegant Data 
# Visualisations Using the Grammar of Graphics. R package version 
# 2.2.1. 
# 
#A BibTeX entry for LaTeX users is 
# 
# @Book{, 
# author = {Hadley Wickham}, 
# title = {ggplot2: Elegant Graphics for Data Analysis}, 
# publisher = {Springer-Verlag New York}, 
# year = {2009}, 
# isbn = {978-0-387-98140-6}, 
# url = {http://ggplot2.org}, 
# }