Colsums使用r中列表中索引的循环
Colsums using loop from indices in list in r
您好,我有一个包含多个列的 DF,所有列都包含数值。我的 df 包含超过 200 列,但示例应该这样做。我想从索引列表中获取值并在 RowSums 循环中使用它们,以便列表名称是新列,总和是 indices
的组合
Main <- c(rep(1, times = 6), rep(2, times = 6))
Feature1 <- sample(1:20, 12, replace = T)
Feature2 <- sample(400:500, 12, replace = T)
Feature3 <- sample(1:5, 12, replace = T)
df.main <- data.frame(Main, Feature1, Feature2,
Feature3, stringsAsFactors = FALSE)
Main Feature1 Feature2 Feature3
1 1 6 483 3
2 1 9 405 1
3 1 18 494 5
4 1 7 499 5
5 1 13 436 1
6 1 2 451 3
7 2 4 456 3
8 2 19 442 5
9 2 16 437 2
10 2 4 497 4
11 2 7 497 3
12 2 5 466 1
list(`Cool Ranch|Cool Chipotle` = c(1L, 4L,), `Trust|Scotia` = c(3L,
4L))
我希望我的输出看起来像这样
Main Feature1 Feature2 Feature3 cool_ranch trust_scotia
1 1 6 483 3 4 486
2 1 9 405 1 2 406
3 1 18 494 5 6 499
4 1 7 499 5 6 504
5 1 13 436 1 2 437
6 1 2 451 3 4 454
7 2 4 456 3 5 459
8 2 19 442 5 7 447
9 2 16 437 2 4 439
10 2 4 497 4 6 501
11 2 7 497 3 5 500
12 2 5 466 1 3 467
我已经尝试了一些与下面相同的方法
> sum.test<- apply(df.main, 2, function(i) rowSums[vlist.imps$i])
Error in rowSums[vlist.imps$i] :
object of type 'closure' is not subsettable
我们可以在 'vlist.imps' 上使用循环,使用这些索引提取 'df.main' 的列,获取 rowSums
并将输出分配回以创建新列
df.main[names(vlist.imps)] <- lapply(vlist.imps, function(x) rowSums(df.main[x]))
您好,我有一个包含多个列的 DF,所有列都包含数值。我的 df 包含超过 200 列,但示例应该这样做。我想从索引列表中获取值并在 RowSums 循环中使用它们,以便列表名称是新列,总和是 indices
的组合Main <- c(rep(1, times = 6), rep(2, times = 6))
Feature1 <- sample(1:20, 12, replace = T)
Feature2 <- sample(400:500, 12, replace = T)
Feature3 <- sample(1:5, 12, replace = T)
df.main <- data.frame(Main, Feature1, Feature2,
Feature3, stringsAsFactors = FALSE)
Main Feature1 Feature2 Feature3
1 1 6 483 3
2 1 9 405 1
3 1 18 494 5
4 1 7 499 5
5 1 13 436 1
6 1 2 451 3
7 2 4 456 3
8 2 19 442 5
9 2 16 437 2
10 2 4 497 4
11 2 7 497 3
12 2 5 466 1
list(`Cool Ranch|Cool Chipotle` = c(1L, 4L,), `Trust|Scotia` = c(3L,
4L))
我希望我的输出看起来像这样
Main Feature1 Feature2 Feature3 cool_ranch trust_scotia
1 1 6 483 3 4 486
2 1 9 405 1 2 406
3 1 18 494 5 6 499
4 1 7 499 5 6 504
5 1 13 436 1 2 437
6 1 2 451 3 4 454
7 2 4 456 3 5 459
8 2 19 442 5 7 447
9 2 16 437 2 4 439
10 2 4 497 4 6 501
11 2 7 497 3 5 500
12 2 5 466 1 3 467
我已经尝试了一些与下面相同的方法
> sum.test<- apply(df.main, 2, function(i) rowSums[vlist.imps$i])
Error in rowSums[vlist.imps$i] :
object of type 'closure' is not subsettable
我们可以在 'vlist.imps' 上使用循环,使用这些索引提取 'df.main' 的列,获取 rowSums
并将输出分配回以创建新列
df.main[names(vlist.imps)] <- lapply(vlist.imps, function(x) rowSums(df.main[x]))