0
Я создал эту функцию в R, но вывод, который должен быть сохранен в каталоге, не является ожидаемым. Когда я печатаю переменную i, она всегда имеет значение 1, поэтому имя файлов, которые я сохраняю, всегда те, что у меня есть на первой позиции вектора.Сохранение внутри функции в R
function_filtering <- function(x){
upname <- c("up_toptable_alk.Rda", "up_toptable_kcbc1.Rda", "up_toptable_kwt.Rda", "up_toptable_NaHog1.Rda", "up_toptable_Nawt.Rda","up_toptable_ox.Rda", "up_toptable_ter.Rda", "up_toptable_ypd.Rda")
downname <- c("down_toptable_alk.Rda", "down_toptable_kcbc1.Rda", "down_toptable_kwt.Rda", "down_toptable_NaHog1.Rda", "down_toptable_Nawt.Rda", "down_toptable_ox.Rda", "down_toptable_ter.Rda", "down_toptable_ypd.Rda")
p.value.cut <- which(x$P.Value < 0.05)
x <- x[p.value.cut,]
up <- which(x$t > 0)
down <- which(x$t < 0)
up.p.value <- x[up,]
down.p.value <- x[down,]
save(up.p.value, file = upname[i])
save(down.p.value, file = downname[i])
i <- i + 1
print(i)
}
lapply(data, function_filtering)
Спасибо.
Я не вижу, где вы назначаете 'i' первоначально в функции. Ожидаете ли вы, что для каждого объекта в 'data' будет другое значение' i'? Если это так, вы можете посмотреть в 'seq_along (data)' и передать объект данных своей функции в качестве другого аргумента. – jraab
Это должно быть в начале работы. Я не помещал его здесь, кроме исходного кода. i = 1 – biorunner88
Проблема заключается в том, что 'i' заменяется только локально на функцию' function_filtering', поэтому присваивание 'i <- i + 1' не влияет на глобальное значение' i'. Чтобы выполнить глобальное присвоение, используйте 'i << - i + 1'; что эта реализация довольно неуклюжая, и это может быть хорошей идеей сделать это в цикле (например, что-то, что пересекает значения вектора значений «x»). – tkmckenzie