如何在R语⾔中for循环批量创建变量并赋值
要做的case中需要批量读取⼀个⽂件夹中所有的tif⽂件,想要读取每⼀个并给予对应的变量名。
setwd("D:/case_age/data/wc2.1_10m_tavg")
all_td <- list.files(getwd())
eval是做什么的前两步分别是设定⼯作⽬录和读取⽂件夹中所有⽂件,没有啥问题,⽽批量⽣成变量并赋值这⼀步出现了问题。
for (i in 1:length(all_td)){
result_i = readGDAL(all_td[i])
}
⾸先尝试了直接刚,只能输出⼀个结果显然不⾏。也搜不到在变量名中使⽤占位符的⽅法。
然后尝试先⽣成变量,然后再分配:
file_tname=paste("result",c(1:length(all_td)),sep="")
for (i in 1:length(all_td)){
file_tname[i] = readGDAL(all_td[i])
}
会出现如下报错:
这是因为读取的⽂件是空间数据,如果换成普通的数值就能正常执⾏。
在查询了诸多⽅法后,总算到了个有⽤的⽅法:总算是能够成功运⾏了。核⼼就是eval函数和parse函数。在处理别的数据类型时,应该只要按照需要修改括号中的代码就能正常运⾏了。
参考⽹址:
for (i in 1:length(all_td)) {eval(parse(text=paste(paste('f_t',i,sep=''), '= readGDAL(all_td[',i,'])')))}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论