这里我使用“<< - ”符号将数据帧temp用作全局变量。我希望获得值全局变量值的变化会影响每个函数。但是它不起作用。
我的代码是
vf<-function()
{
df<<-data.frame(A=c(2),B=c(3))
vk(df)
print(df)
}
vk<-function(df)
{
lk<-data.frame(C=c(3),D=c(4))
df<<-cbind(df,lk)
}
函数调用后没有任何反应。
预期产出
>vf()
A B C D
2 3 3 4
如何解决?
答案 0 :(得分:1)
实际上,您的代码完美运行:-)如果您想使用全局变量,那么您唯一错过的部分就必须全局声明。
这是我的输出:
> df <- NULL
> vf <- function()
{
df <<- data.frame(A=c(2),B=c(3))
vk(df)
print(df)
}
> vk <- function(df)
{
lk <- data.frame(C=c(3),D=c(4))
df <<- cbind(df,lk)
}
> vf()
A B C D
1 2 3 3 4
所以你错过的是添加df <- NULL
声明
你可以做同样的全局变量,它有点清洁:
vf <- function()
{
df <- data.frame(A=c(2),B=c(3))
vk(df) # Same as 'return(vk(df))'
}
vk <- function(df)
{
lk <- data.frame(C=c(3),D=c(4))
cbind(df,lk) # Same as 'return(cbind(df,lk))'
}
vf() # Returns value, not stored --> printed on the output
newGlobal <- vf() # Stores the value returned by vf()
顺便说一句,如果您对R感兴趣,可以在此处找到有关常见代码段和陷阱的精彩书籍列表:
http://xcafebabe.blogspot.hu/2011/09/free-r-book-collection.html