我想在data.frame之上存储其他信息并从函数返回它。正如您所看到的 - 附加数据消失了。 例如:
> d<-data.frame(N1=c(1,2,3),N2=(LETTERS[1:3]))
> d
N1 N2
1 1 A
2 2 B
3 3 C
> d.x = 3
> d
N1 N2
1 1 A
2 2 B
3 3 C
> d.x
[1] 3
> foo1 <- function() {
+ d<-data.frame(N1=c(1,2,3),N2=(LETTERS[1:3]))
+ d.x=3
+ return(d)
+ }
>
> d1<-foo1()
> d1
N1 N2
1 1 A
2 2 B
3 3 C
> d1.x
Error: object 'd1.x' not found
我查看了assign
,但由于data.frame是在函数内创建的并且被返回,我认为它与此处无关。
感谢。
答案 0 :(得分:1)
您的评论建议您要创建一个属性(将“元数据”附加到R中的对象的常用方法)名为“d.3”,并使用foo1为数据框设置该属性:
d <- data.frame(N1=c(1,2,3),N2=(LETTERS[1:3]))
foo1 <- function(d, attrib) {
attr(d, "d.x") <- attrib
return(d)
}
d <- foo1(d, 3) # need to assign value to 'd' since function results are not "global"
d # note that the default print method for dataframes does not show the attributes
#---------
N1 N2
1 1 A
2 2 B
3 3 C
#-----
attributes(d)
#-----
$names
[1] "N1" "N2"
$row.names
[1] 1 2 3
$class
[1] "data.frame"
$d.x
[1] 3
有关详细信息,请参阅?attr
和?attributes
。还有comments
函数。
答案 1 :(得分:0)
改变这个:
d.x=3
到此:
d$x=3