Как объединить несколько действий в операторе if-else - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь объединить несколько действий в одном выражении ifelse.Второе действие работает с первым и так далее, но я получаю предупреждение об ошибке: «операции возможны только для числовых, логических или сложных типов».

Ошибка относится к данным, которые я создал ранее, иэто рабочий каталог, сохраненный как символ.Поэтому я не могу изменить его на числовой, логический или сложный.Я попробовал, но это становится NA.

Использование as.factor приводит к тому же предупреждению об ошибке.Когда я запускаю код шаг за шагом, ошибки не возникает, она возникает только в том случае, если я запускаю весь оператор ifelse.

Проблема возникает в строке оператора ifelse "meta_nam <- paste (folder,".xlsx", sep = "") "</p>

Я думаю, что проблема заключается в" папках ".Данные выглядят так: «O: / data / Projekt / a»

 condition1 <- as.Date(sub(".*/(.*)","\\1",x), "%Y.%m.%d")>as.Date("2017-03-05")
 ifelse(condition1==T, yes=((meta_nam <- paste(folders, ".xlsx", sep="")) &
                              (exist <- file.exists(meta_nam)) &
                              (for (i in 1:length(folders)) {
                                if(exist[i]==F) 
                              {stop(paste("Meta-Excel fehlt fuer: ", folders[i]))}}) &
                              (me=lapply(meta_nam, function(y) read_excel(y))) &
                              (me=lapply(me, function(y) as.data.frame(y[!is.na(y$dID), 
                               seq(which(colnames(y)=="dID"), which(colnames(y)=="parameter_stop")-1)]))) &
                              (me=lapply(me, function(y) y[,colSums(is.na(y))<nrow(y)])) &
                              (me=lapply(me, function(y) y[rowSums(is.na(y))<(ncol(y)-1),])))

        , no=((meta_nam=paste(folders, ".csv", sep="")) &
                (exist=file.exists(meta_nam)) & 
                (for (i in 1:length(folders)) {
                  if(exist[i]==F) 
                  {stop(paste("Meta-Excel fehlt fuer: ", folders[i]))}}) &
                (me=lapply(meta_nam, function(y) read.table(y, sep="\t", header=T, stringsAsFactors=F))) &
                (me=lapply(me, function(y) y[,colSums(is.na(y))<nrow(y)])) &
                (me=lapply(me, function(y) y[rowSums(is.na(y))<(ncol(y)-1),]))))

Идея использования оператора ifelse заключается в том, чтобы сократить время выполнения до того, как я использовал if ... else ...аргумент, проблем не было.

...