我正在尝试在一个ifelse语句中组合多个动作。第二个动作正在与第一个动作一起使用,依此类推,但是我得到了错误警告:“操作只能用于数字,逻辑或复杂类型”。
错误是指我之前生成的数据,它是一个工作目录,另存为字符。因此,我不能将其更改为数字,逻辑或复杂。我试过了,但是变成了NA。
使用as.factor会导致相同的错误警告。 当我逐步运行代码时,没有错误,仅当我运行整个ifelse语句时才会发生。
问题发生在ifelse语句“ meta_nam <-paste(文件夹,“ .xlsx”,sep =“”)“的行中
我认为“文件夹”是问题所在。数据看起来像:“ 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 ...参数之前,没有问题。