如何存储要在函数外部使用的值

我有一个函数可以逐行读入非常大的文本文件。 在使用我的功能之前,我创建了一个填充了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

回到顶部