在R中的函数中创建新数据帧

时间:2017-12-12 13:13:21

标签: r function dataframe

我一直在尝试编写一个基于前一个创建新对象的函数(在几次更改之后)。但是,我没有设法做到这一点。 这是我的数据框:

 Names <- c("Tom", "Alex", "James", "John", "Wayne", "Harry") 
 a <- c(1,3,6,8, NA, 5) 
 b <- c(3,6,9,1, NA,1)  
 c <- c(7,3,1,6,NA,6) 
 d <- c(1,4,7,2,NA,8) 
 data <- data.frame(Names,a,b,c,d)

这是我的功能

NAvalues <- function(x,object, y){
    object[sample(seq_len(nrow(object)), x, replace = FALSE),-1] <- NA   
    summary(object)   
    y <- data.frame(object) 
} 

第一部分工作正常,但我正在努力创建一个新对象,其名称由y指定。

NAvalues(2, data, new)

当我使用它时,我收到一个错误,即没有new这样的对象。 有人可以告诉我为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

根据我的理解,你的任务的目标是通过执行函数y创建一个由参数NAvalues()定义的data.frame。

NAvalues <- function(x,object, y){
        object[sample(seq_len(nrow(object)), x, replace = FALSE),-1] <- NA   
        summary(object)
        assign(paste(y), data.frame(object), envir = .GlobalEnv)
} 

NAvalues(x = 2, object = data, y = "new")  #y must be a character because it is the name of the new data.frame

解决方案的关键是

assign(paste(y), data.frame(object), envir = .GlobalEnv)

允许创建名为string parameter y的变量,并将该变量分配给global.environment