在这里,我通过使用“ <<-”符号将数据帧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
如何解决?
实际上,您的代码可以完美地工作:-)如果要使用全局变量,您唯一想念的部分就是必须全局声明。
这是我的输出:
> 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
声明
您可以执行相同的w / oa全局变量,这会更简洁:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句