R - 如何替换向量子集中的值
R - how to replace values in a subset of a vector
我有一个 bash 脚本,它基本上是用于下载一堆气候文件的一系列命令。在脚本的许多其他信息中,第 28 行到 1027 行确定了应该下载的实际文件。查看我的文件:
# point to file
file <- 'https://dl.dropboxusercontent.com/u/27700634/wget-ESG-files.sh'
# read file content
r.lines <- readLines(con=file)
我需要做的是:
1) 检测文件名中的模式,仅对我真正需要下载的文件进行子集化。这个我可以,看代码:
# choose variable name.
# in this case, average monthly precipitation
var <- 'pr_Amon'
# find only the lines that contain my variable of interest
new.r.lines <- r.lines[grepl(var, r.lines)]
new.r.lines
2) 现在,我需要做的是用变量"new.r.lines"的内容替换原文件中第28到1027个元素的所有内容。结果也必须是向量,因为在脚本结束时我将使用 writeLines 创建一个新文件。
这可能是一个非常简单的任务,但我只是卡在了这一步。
非常感谢任何帮助!
谢谢,
蒂亚戈.
您可以按如下方式构建新的文件行集:
new.r.lines <- c(r.lines[1:27],r.lines[28:1027][grepl(var,r.lines[28:1027])],r.lines[1028:length(r.lines)]);
这会将第 1:27 行与以下 28:1027 行中符合您的搜索模式的子集组合在一起,然后进一步与第 1028 行组合到文件末尾。因此,您可以将其传递给 writeLines()
以创建新文件。
这里有一个稍微简洁的方法,建立一个索引向量,然后索引一次线向量:
new.r.lines <- r.lines[c(1:27,27+grep(var,r.lines[28:1027]),1028:length(r.lines))];
我有一个 bash 脚本,它基本上是用于下载一堆气候文件的一系列命令。在脚本的许多其他信息中,第 28 行到 1027 行确定了应该下载的实际文件。查看我的文件:
# point to file
file <- 'https://dl.dropboxusercontent.com/u/27700634/wget-ESG-files.sh'
# read file content
r.lines <- readLines(con=file)
我需要做的是:
1) 检测文件名中的模式,仅对我真正需要下载的文件进行子集化。这个我可以,看代码:
# choose variable name.
# in this case, average monthly precipitation
var <- 'pr_Amon'
# find only the lines that contain my variable of interest
new.r.lines <- r.lines[grepl(var, r.lines)]
new.r.lines
2) 现在,我需要做的是用变量"new.r.lines"的内容替换原文件中第28到1027个元素的所有内容。结果也必须是向量,因为在脚本结束时我将使用 writeLines 创建一个新文件。
这可能是一个非常简单的任务,但我只是卡在了这一步。
非常感谢任何帮助!
谢谢, 蒂亚戈.
您可以按如下方式构建新的文件行集:
new.r.lines <- c(r.lines[1:27],r.lines[28:1027][grepl(var,r.lines[28:1027])],r.lines[1028:length(r.lines)]);
这会将第 1:27 行与以下 28:1027 行中符合您的搜索模式的子集组合在一起,然后进一步与第 1028 行组合到文件末尾。因此,您可以将其传递给 writeLines()
以创建新文件。
这里有一个稍微简洁的方法,建立一个索引向量,然后索引一次线向量:
new.r.lines <- r.lines[c(1:27,27+grep(var,r.lines[28:1027]),1028:length(r.lines))];