R 字符串操作-用变量替换文本并解析
任务: 我的任务是在csv输入数据中应用一些给定的计算规则。 在第一步中,我需要将给定的规则(下面的示例)翻译成R语言。在第二步中,我将一些csv文件(表格)加载到R中,并将规则应用于数据,以检查规则中给出的条件是否可以确认 C 01.00、F 08.01.b等是不同的表。 每个工作表都有许多行和列 创意: 我的想法是为每张图纸定义一个矩阵。例如,R 字符串操作-用变量替换文本并解析,r,regex,string,csv,R,Regex,String,Csv,任务: 我的任务是在csv输入数据中应用一些给定的计算规则。 在第一步中,我需要将给定的规则(下面的示例)翻译成R语言。在第二步中,我将一些csv文件(表格)加载到R中,并将规则应用于数据,以检查规则中给出的条件是否可以确认 C 01.00、F 08.01.b等是不同的表。 每个工作表都有许多行和列 创意: 我的想法是为每张图纸定义一个矩阵。例如,F0801b是一个表“f08.01.b”中的矩阵,其中包含99行99列和许多值。变量F0801bR450将是F0801b矩阵的第45行 规则可以如下所
F0801b
是一个表“f08.01.b”中的矩阵,其中包含99行99列和许多值。变量F0801bR450
将是F0801b矩阵的第45行
规则可以如下所示:
{r390,c010}=={r400,c010}+{r410,c010}+{r420,c010}
每个计算规则都连接到一个特定的“表”。如果规则如上所述,同一工作表第39行和第1列的单元格必须等于右侧的项。
任务是从计算规则中给定的单元格中获取值,因此用矩阵中的值替换{}中的字符串,并在最后解析方程以检查条件是否为真
{F 19.00.a,c100}您真的需要自定义公式吗?是否有任何理由不直接编写R表达式,例如:
M <- matrix(1:16, 4) # test matrix
M[1, 2] == M[4, 1] + M[3, 3] + M[2, 1]
## [1] FALSE
M到目前为止你都试了些什么?最重要的是,向我们展示可复制的数据。
b <- gsubfn(pat2, getCell, string); b
eval(parse(text=b))
M <- matrix(1:16, 4) # test matrix
M[1, 2] == M[4, 1] + M[3, 3] + M[2, 1]
## [1] FALSE
# test input
matrix_name <- "M"
string <- "{r001, c002} == {r004, c001} + {r003, c003} + {r002, c002}"
txt <- gsub("\\{r(\\d+), c(\\d+)\\}", paste0(matrix_name, "[\\1, \\2]"), string)
eval(parse(text = txt))
## [1] FALSE
string2 <- "{M r001, c002} == {M r004, c001} + {M r003, c003} + {M r002, c002}" # input
txt2 <- gsub("\\{(\\w+) r(\\d+), c(\\d+)\\}", "\\1[\\2, \\3]", string2)
eval(parse(text = txt2))
## [1] FALSE