我一直在尝试编写一个基于前一个创建新对象的函数(在几次更改之后)。但是,我没有设法做到这一点。 这是我的数据框:
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
这样的对象。
有人可以告诉我为什么会这样吗?
答案 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