R 获取循环中的值

R 获取循环中的值,r,vector,getvalue,R,Vector,Getvalue,我有一些文件(VI3g光栅数据)需要读取。我要读入的文件名保存在名为“filename”的向量中(其中向量的第一个元素是我要读入的第一个文件名),变量名(其中向量的第一个元素是我要读入的第一个变量名)我想将它们分配给的名为“varname” filename varname file1.VI3g variable_xy file2.VI3G variable_z ... ... 我的方法(有效)如下: for (i in 1:12) { assign(

我有一些文件(VI3g光栅数据)需要读取。我要读入的文件名保存在名为“filename”的向量中(其中向量的第一个元素是我要读入的第一个文件名),变量名(其中向量的第一个元素是我要读入的第一个变量名)我想将它们分配给的名为“varname”

filename      varname
file1.VI3g    variable_xy
file2.VI3G    variable_z
...           ...
我的方法(有效)如下:

for (i in 1:12) {
assign(varname[i], ReadVI3g(filename[i]))
}
但数据是光栅层。我需要进一步计算的是向量,因为有些计算不适用于光栅层。因此,我的方法是通过getValues转换数据,以获得向量,而不是Rasterlayer

for (i in 1:12) {
  assign(varname[i], ReadVI3g(filename[i]))
  varname[i]<- getValues(varname[i])
}
我理解这个问题,但我找不到解决办法。我也试着用assign来解决这个问题,但也没用

接下来的问题是:由于我是R新手,我倾向于用循环来解决很多问题。我知道这是低效的,而且通常有更聪明的解决方案。有没有一种简单的方法可以避免这种循环


事先非常感谢。

我同意以下想法:

apply(df,1,function(x) { assign(x['varname'], getValues(ReadVI3g(x['filename'])), env=.GlobalEnv) })
需要
env=.GlobalEnv
,以便在GlobalEnv中设置
变量_xy
,而不仅仅是在内部函数范围内


旁注:循环并非天生低效,但必须明智地使用,尽可能使用*apply系列。

尝试
getValues(get(varname[i])
或简单地
assign(varname[i]、getValues(ReadVI3g(filename[i])
更好的方法可能是使用lappy,在您的环境中使用所有这些向量通常是不实际的。在我看来,你的方法根本上是有缺陷的。每当您认为需要使用
assign
时,您就错了。但是,由于您没有解释想要实现什么,没有提供可复制的示例,并且使用未知函数
ReadVI3g
,因此不可能提供好的建议。您可能应该创建一个光栅层对象列表(
s=lappy(文件名,光栅)
)或光栅堆栈
s=stack(文件名)
。你还说“有些计算不适用于光栅层”——也许,但你可能错了。请告诉我们您想做什么,让我们为您指引正确的方向。
apply(df,1,function(x) { assign(x['varname'], getValues(ReadVI3g(x['filename'])), env=.GlobalEnv) })