7
是否有一個功能,或者一種方式來獲得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
哪ma在rowSums()
功能看時KES感:
> 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
附加信息
列將由用戶在閃亮應用被選擇並存儲在變量中。這個變量然後傳遞給rowSums
。用戶可以選擇一個或多個列。
我可以構造一個ifelse
語句來檢查變量的長度,但想知道是否有更好/更優雅/單行的解決方案,我沒有看到?
使用drop = FALSE。即。 'rowsums(df [,colsToAdd,drop = FALSE])' – akrun
如果數據中沒有'NA',比如'Reduce(「+」,df [,colsToAdd] )'這應該是一樣快(如果不是更快)。儘管@akrun明確表示了它。 –
boom - 'drop = FALSE'。謝謝@akrun。你想讓它成爲答案嗎? – tospig