嗨,我想了解 R 阅读这行代码的方式

Hi I would like to understand the way R read this line of code

对象数据是一个包含多列的数据框,v 是包含 icd10 代码的列。

目的是存储一个逻辑值,如果满足这些条件,该逻辑值将 return 为真。

indication <- nchar(gsub("[^[:alpha:]]", "", data[[v]])) > 1 & !is.na(data[[var]])

因为当我打印指示时可以说数据[1984,96]。行号 1984 和列 96(v),值为“inc”。

我只是根据您所说的进行解读,希望对您有所帮助。

看来 ICD-10 代码是字符和整数的组合,用于以 AA00-AA00 的形式对疾病进行分类。了解您的数据框在该列中有一些 NA,以及一些您想要过滤掉的只有一个字母的其他输入。

我会假设你的数据框或多或少有这样的结构:

data <- data.frame(Patient=character(),
                   Age=integer(), 
                   V=character(), 
                   stringsAsFactors=FALSE)
for(u in 1:5){
data[u,] <- c(LETTERS[sample(1:26,1)],
              sample(0:100,1),
              paste0(LETTERS[sample(1:26,1)],
                     LETTERS[sample(1:26,1)],
                     sample(0:9,1),sample(0:9,1),"-",
                     LETTERS[sample(1:26,1)],
                     LETTERS[sample(1:26,1)],
                     sample(0:9,1),sample(0:9,1)))
}

data[3,3] <- NA
data[5,3] <- "h1 456"

head(data)
  Patient Age         V
1       N  23 EZ11-RO87
2       E  60 QE57-CJ49
3       H  73      <NA>
4       G  10 AQ75-UX16
5       Z  28    h1 456

对你的代码做一点小改动(注意列名的逗号/加上我假设 v 和 var 实际上是同一列),你会:

indication <- (nchar(gsub("[^[:alpha:]]", "", data[["V"]]))>1 & !is.na(data[["V"]]))
indication

[1]  TRUE  TRUE FALSE  TRUE FALSE

代码将 return 一个布尔值向量,其长度等于数据框中的行数,如果单元格内没有 NA 并且字符有超过 1 个字母,则值为 TRUE

不确定这能否回答您关于如何 interpret/make 代码工作的问题,但无论如何我希望它能有所帮助。