R If else语句不起作用,无法找出原因

R If else语句不起作用,无法找出原因,r,if-statement,R,If Statement,有人能解释为什么我的其他部分功能不起作用吗 可融资的 Duplicate Digit6 Digit7 Digit7a Digit7b Digit7c Digit7d Dead carried 137401 137401 2017681 2017681 2018047 2018047 2018219 1 0 137402 137402 2017731 2017731 2017856 2017856 2018279 0 0 w <- function(

有人能解释为什么我的其他部分功能不起作用吗

可融资的

Duplicate Digit6  Digit7 Digit7a Digit7b Digit7c Digit7d Dead carried
137401 137401 2017681 2017681 2018047 2018047 2018219    1       0 
137402 137402 2017731 2017731 2017856 2017856 2018279    0       0

w <- function(finaltable){
if (nchar(tail(names(finaltable),1) >= nchar(c("carried")))) {(ncol(finaltable)-2)
    } else (ncol(finaltable)-1)
}
我的名字重复,数字,死亡,携带。我要最后一个数字列。取决于我将有tailnamesfinaltable的日期,1=携带或死亡。如果被携带,我需要减去两列,如果为空,则减去一列。然而,我有几个列命名为dead或carried,它们与number关联。但是,最大死区将是死区99。因此,我最多有6个字符

然后我想把我的函数转储到下面

SubtractROW<-finaltable[paste(ROWS), w(finaltable)];
BarCODEtable<-cbind(ILS,ROWS,SubtractROW);
BarCODEtable;

这是您的函数,已更正,以便返回正确的值:

w <- function(finaltable){
  if (nchar(tail(names(finaltable),1)) >= nchar("carried")) {
  (ncol(finaltable)-2)
  } else {
    ncol(finaltable)-1
  }
}

w(finaltable)  # if last column is dropped
#[1] 7
它应该在哪里

nchar(tail(names(finaltable),1)) >= nchar("carried")
#[1] FALSE
但是如上所述,您可以更轻松地使用

max(which(grepl("^Digit", names(finaltable))))

相反。

如果要查找列名中最后一列的数字,可以使用maxwhichgrepl^Digit,namesfinaltable而不是If-else。@初学者,这是什么意思^数字?@另外,你能解释一下我的函数有什么问题吗?也就是说,检查列名是否以数字开头。^用于表示应该在开头找到字符串。你的函数似乎工作正常。当我运行它时,它返回7-这对于示例数据是正确的。
max(which(grepl("^Digit", names(finaltable))))