如何存储要在函数外部使用的值
我有一个函数可以逐行读入非常大的文本文件。 在使用我的功能之前,我创建了一个填充了NA的列表。如何存储要在函数外部使用的值
该功能在特定条件满足时将+1添加到列表中的特定位置。但是这种方式只能在函数中使用。如果我在应用后列出我的列表,则会再次显示初始列表(填入NA)。
如何将这些值存储为可以在函数外部使用的值?
lion<-lapply(1, function(x) matrix(NA, nrow=2500, ncol=5000))
processFile = function(filepath) { con = file(filepath, "rb")
while (TRUE) {
line = readLines(con, n = 1)
if (length(line) == 0) {
break
}
y <- line
y2 <- strsplit(y, "\t")
x <- as.numeric(unlist(y2))
if(x[2] <= 5000 & x[3] <= 2500) {
lion[[1]][trunc(x[3] + 1), trunc(x[2])] <- lion[[1]][trunc(x[3] + 1), trunc(x[2])]
}
}
close(con)
}
回答:
您可能已返回列表,你的函数的最后一部分:
processFile = function(filepath) { con = file(filepath, "rb")
while (TRUE) {
line = readLines(con, n = 1)
if (length(line) == 0) {
break
}
y <- line
y2 <- strsplit(y, "\t")
x <- as.numeric(unlist(y2))
if(x[2] <= 5000 & x[3] <= 2500) {
lion[[1]][trunc(x[3] + 1), trunc(x[2])] <- lion[[1]][trunc(x[3] + 1), trunc(x[2])]
}
}
close(con)
return(lion)
}
这样,您就可以调用与lion <- processFile(yourfile)
你的函数或者,您可以在执行该功能时将列表分配给.GlobalEnv:
processFile = function(filepath) { con = file(filepath, "rb")
while (TRUE) {
line = readLines(con, n = 1)
if (length(line) == 0) {
break
}
y <- line
y2 <- strsplit(y, "\t")
x <- as.numeric(unlist(y2))
if(x[2] <= 5000 & x[3] <= 2500) {
lion[[1]][trunc(x[3] + 1), trunc(x[2])] <- lion[[1]][trunc(x[3] + 1), trunc(x[2])]
}
}
close(con)
assign("lion", lion, envir = .GlobalEnv)
}
以上是 如何存储要在函数外部使用的值 的全部内容, 来源链接: utcz.com/qa/266297.html