Я борюсь с циклом в R, где мне нужно использовать имена динамических переменных (о которых мне говорят, это плохая идея из других сообщений о именах динамических переменных, но я довольно что мне нужно основываться на моей файловой структуре). Каждая папка, в которую входит цикл, есть другое количество файлов.Назначение значений внутри динамически названной матрицы в R
Динамические имена переменных содержат матрицы, и мне нужно искать в каждой строке/столбце матрицы и выводить новую матрицу.
Обтекаемый пример:
var 1 is a matrix(0,40,40)
var 2 is a matrix(0,45,45)
var 3 is a matrix(0,40,40)
For (f in 1:(length of var3s)) # the number of files in the folder, in each folder:
For (g in 1: ncol(var1)) {
For (h in 1: nrow(var1)) {
if (var 1[g,h]>4 & var 2[g,h]<1)
{ var3[f] [g,h]<-1} # <- you cannot do this, but this is ultimately what I want
}
}
Я хочу взять ф-й переменную матрицы из списка переменных 3 и присвоить значение местоположения в [г, ч] я сделал это раньше с реальным имена переменных, но я борюсь с добавлением динамического элемента. Это то, на что он похож, и на ошибки, которые я получаю.
for (f in 1:(length(LD139_040))){
assign(paste0("LD139_040s",f),
matrix(0,nrow(eval(parse(text=paste0("B139_040",f)))),
ncol(eval(parse(text=paste0("B139_040",f)))))) # this effectively creates my new matrix (var3 above) the size I need based on the files above
for (g in 1:(ncol(eval(parse(text=paste0("B139_040",f)))))){
for (h in 1:(nrow(eval(parse(text=paste0("B139_040",f)))))){
if (S139_040[g,h]>10 &
(assign(paste0("LD139_040",f), as.matrix(raster(LD139_040[f]))))[g,h]>.295 &
(assign(paste0("LD139_040",f), as.matrix(raster(LD139_040[f]))))[g,h]<.33 &
(assign(paste0("B139_040",f), as.matrix(raster(Blue139_040[f]))))[g,h]<180)
# this section also works and will give me a t/f at each location [g,h]
# if true, assign the value 1 to the new matrix LD139_040 at f
{assign(paste0("LD139_040s", f)[g,h], 1)}
}
}
}
Я пробовал различные комбинации Eval и назначить организовать последнее заявление, и я получаю ошибки, такие как «недействительное первое задание», неправильное число измерений, и цель назначения расширяется неязыковым объект.
Благодарим за помощь!
R версии 3.1.1 «Носок его мне» с библиотекой (растр)