R:使用for循环更改变量名

iswrvxsc  于 2023-03-27  发布在  其他
关注(0)|答案(2)|浏览(185)

我有一个数据,和向量contatin变量的名称,从这些vectorsi计算的总和变量中包含的向量,我想把结果在一个新的变量,有不同的名称
假设我有三个向量

>data

Name      A    B    C    D    E
r1        1    5    12  21    15
r2        2    4     7  10     9
r3        5   15     6   9     6
r4        7    8     0   7    18

这些向量是用for循环生成的,在变量vec中

V1 <- ("A","B","C")
V2 <- ("B","D")
V3 <- ("D","E")

编辑1:这些向量是使用for循环生成的,我不知道将生成的向量或这些向量中包含的元素,这里我只是举一个例子,我想计算每个向量中变量的总和,并在我的 Dataframe 中创建新变量的结果问题是不知道如何为创建的变量(包含每个向量的总和)命名

data$column[j]  <- rowSums(all_data_Second_program[,vec])
 j <- j+1

为了得到这个结果例如

Name      A    B    C   Column1      D     Column2    E      Column3
 r1       1    5   12     18         21      26      15         36 
 r2       2    4    7     13         10      14       9         19
 r3       5   15    6     26          9      24       6         15
 r4       7    8    0     15          7      15      18         25

但是我没有得到这个结果
如果你需要更多的信息或澄清,请告诉我。你能告诉我怎么做吗

neekobn8

neekobn81#

将向量放在列表中,然后可以在lapply中使用rowSums-

list_vec <- list(c("A","B","C"), c("B","D"), c("D","E"))
new_cols <- paste0('Column', seq_along(list_vec))

data[new_cols] <- lapply(list_vec, function(x) rowSums(data[x]))
data

#  Name A  B  C  D  E Column1 Column2 Column3
#1   r1 1  5 12 21 15      18      26      36
#2   r2 2  4  7 10  9      13      14      19
#3   r3 5 15  6  9  6      26      24      15
#4   r4 7  8  0  7 18      15      15      25
ht4b089n

ht4b089n2#

我们可以使用for循环

for(i in 1:3) {
    data[[paste0('Column', i)]] <- rowSums(data[get(paste0('V', i))],
          na.rm = TRUE)
}
  • 输出
> data
  Name A  B  C  D  E Column1 Column2 Column3
1   r1 1  5 12 21 15      18      26      36
2   r2 2  4  7 10  9      13      14      19
3   r3 5 15  6  9  6      26      24      15
4   r4 7  8  0  7 18      15      15      25

相关问题