在函数内部加载Rdata文件

4
我有一个函数需要传递数据集作为参数。
loading <- function(dataset){
merchants <- load(dataset)
return(merchants)
}

但是当我使用加载函数时,它返回一个字符向量。
loading("capital.Rdata")
"capital"

我该如何在函数中加载数据?


也许还可以提供或返回您的环境... - drmariod
3个回答

5

load() 命令不会返回存储在 RData 文件中的对象。相反,它返回一个字符向量,列出从 Rdata 文件中加载的所有对象的名称。您的对象显然叫做 capital,所以您可以尝试像这样操作:

loading <- function(dataset){
   merchants <- load(dataset)
   return(get(merchants))
}

你可以通过传递一个字符串给get()函数来返回该名称的对象。
请注意,如果RData文件中保存了多个对象,则此方法将无法使用。检查是否存在多个对象,并可能返回所有对象,这需要读者自己完成。

3
get 只能一次检索一个对象。如果需要获取多个对象,请使用 mget - Richie Cotton
1
没问题。你应该接受任何你用来解决问题的答案。 - Stewart Macdonald

2
使用loadenvir参数来控制存储加载变量的位置。
保存一些变量(以便重现):
x <- 1:10
y <- runif(10)
z <- letters
save(x, y, z, file = "test.RData")

定义你的加载函数。这将返回一个包含xyz的环境。

loading <- function(rdata_file)
{
  e <- new.env()
  load(rdata_file, envir = e)
  e
}

使用方法如下:

data_env <- loading("test.RData")
ls.str(data_env)
## x :  int [1:10] 1 2 3 4 5 6 7 8 9 10
## y :  num [1:10] 0.6843 0.6922 0.3194 0.0588 0.0146 ...
## z :  chr [1:26] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" ...

0

检查 ls()。你应该已经加载了在"capital.Rdata"中保存的变量。你的函数应该返回你保存的变量名,这种情况下应该是capital


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接