gpt4 book ai didi

一列上的 rowSums

转载 作者:行者123 更新时间:2023-12-04 11:36:47 26 4
gpt4 key购买 nike

问题

有没有函数,或者获取rowSums的方法只处理一列?

示例数据

col1 <- c(1,2,3)
col2 <- c(1,2,3)
df <- data.frame(col1, col2)

我可以用 rowSums对两个或多个已定义列的行中的每个值求和:
colsToAdd <- c("col1", "col2")
rowSums(df[,colsToAdd])
[1] 2 4 6

但是,这在仅通过列时失败
colsToAdd <- c("col1")
rowSums(df[,colsToAdd])
Error in rowSums(df[, colsToAdd]) :
'x' must be an array of at least two dimensions

这在查看 rowSums() 时很有意义功能:
> rowSums
function (x, na.rm = FALSE, dims = 1L)
{
if (is.data.frame(x))
x <- as.matrix(x)
if (!is.array(x) || length(dn <- dim(x)) < 2L)
## This line 'stops' the function if only one column is passed

附加信息

这些列将由用户在 Shiny 应用程序中选择并存储在变量中。然后将此变量传递给 rowSums .用户可以选择一栏或多栏。

我可以构建一个 ifelse语句来检查变量的长度,但想知道是否有我没有看到的更好/更优雅/单行解决方案?

最佳答案

你可以试试

rowSums(df[,colsToAdd, drop=FALSE])

根据 ?'[' , 默认情况下,
x[i, j, ... , drop = TRUE]

基于文档

drop: For matrices and arrays. If ‘TRUE’ the result is coerced to the lowest possible dimension

关于一列上的 rowSums,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29893898/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com