我试着让下面的脚本更简洁。
SH1$SCORING7_01 = sub("-", "", SH1$SCORING7_01)
SH1$SCORING7_02 = sub("-", "", SH1$SCORING7_02)
SH1$SCORING7_03 = sub("-", "", SH1$SCORING7_03)
SH1$SCORING7_04 = sub("-", "", SH1$SCORING7_04)
SH1$SCORING7_05 = sub("-", "", SH1$SCORING7_05) 本质上,我只是从每一列的值中删除一个'-‘。(这是一个更大的过程的一部分。)有没有一种方法可以同时从所有五列的值中减去'-‘?这些特定的“SCORING_XX”列的数量实际上上升到38列,并且在未来可能会增加。因此,涉及列范围的内容就更好了(例如: SCORING7_01:SCORING7_XX)。
我在Windows上运行"R版本3.6.2 (2019-12-12)“
发布于 2020-04-04 00:38:39
这是一个基本的R选项:
names <- c("SCORING7_01", "SCORING7_02", "SCORING7_03", "SCORING7_04", "SCORING7_05")
SH1[names] <- lapply(SH1[names], function(x) sub("-", "", x, fixed=TRUE))注意,我在上面对sub的调用中使用了fixed=TRUE选项,因为您的替换逻辑实际上并不涉及任何正则表达式。
发布于 2020-04-04 00:39:35
data.table
对于data.table,您可以使用.SD和lapply
dt <- data.table(df)
dt[,lapply(.SD, function(x) sub("-","",x)), .SDcols = paste0("SCORING7_0",1:5)] 基数R
您还可以使用基本R解决方案
df[,paste0("SCORING7_0",1:5)] <- lapply(paste0("SCORING7_0",1:7), function(var) sub("-","",df[,var]))https://stackoverflow.com/questions/61016386
复制相似问题