2017-08-01 71 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}, 
# }