我试图使用给定变量名的paste引用数据框中的一列,但该列无法识别.下面是我try 使用的数据框和变量名示例:

arm <- "ARM"

ex_df <- data.frame(col1 = c("A","B","C"), col2 = c("X","Y","Z"), ARM_1 = c(1,2,3), ARM_2 = c(4,5,6,), ARM_3 = c(7,8,9), ARM_4 = c(0,0,0))

ex_df %>%
    transmute(col1 = col1, col2 = str_to_title(col2), paste0(arm,"_",4) = paste0(arm,"_",1) + paste0(arm,"_",2) + paste0(arm,"_",3)) %>%
    arrange(col1,col2)

Error: unexpected '=' in:
    "col2 = str_to_title(col2),
    paste0(arm,"_",4) = "

所需的输出应为ARM\u 4=ARM\u 1+ARM\u 2+ARM\u 3,并输出每列值的总和.

谢谢你的帮助.

推荐答案

我们可以将:=!!一起使用,在starts_with存储在arm中的值的列上使用rowSums

library(dplyr)
library(stringr)
ex_df %>%
    transmute(col1 = col1, col2 = str_to_title(col2), 
    !!paste0(arm,"_",4) := rowSums(across(starts_with(arm)), na.rm = TRUE))

-输出

 col1 col2 ARM_4
1    A    X    12
2    B    Y    15
3    C    Z    18

注:rowSums+更好-1)使用na.rm = TRUE处理NA个元素,2)当有10个以上的"臂"柱时,使用紧凑型选项


如果我们想得到paste的列的值

ex_df %>%
    transmute(col1 = col1, col2 = str_to_title(col2), 
   !!paste0(arm,"_",4) := .data[[paste0(arm,"_",1)]] + 
                         .data[[paste0(arm,"_",2)]] + 
                        .data[[paste0(arm,"_",3)]]) %>%
    arrange(col1,col2)

-输出

 col1 col2 ARM_4
1    A    X    12
2    B    Y    15
3    C    Z    18

R相关问答推荐

查找满足SpatRaster中条件的单元格位置

ggplot 2中的地块底图(basemaps_gglayer()不起作用)

如何在R中正确对齐放射状图中的文本

如果索引重复,聚合xts核心数据

基于shiny 应用程序中的日期范围子集xts索引

如何删除多个.CSV文件的行

r—绘制相交曲线

我不能在docker中加载sf

如何在所有绘图中保持条件值的 colored颜色 相同?

从外部文件读取多个值作为字符向量

您是否可以折叠R中的重复行,同时保留基于所选列的值?

从多个线性回归模型中提取系数

从圆到R中的多边形的标绘雷达图

R中有约束的优化问题:如何用复数和对数效益函数解决问题?

在使用具有Bray-Curtis相似性的pvCluust时计算p值

当每个变量值只能 Select 一次时,如何从数据框中 Select 两个变量的组合?

如何计算增加10米(0.01公里)的行?

R代码,用于在线条图下显示观测表

如何提取R中其他字符串和数字之间的字符串?

如何在R中使用因子行求和?