我有一個全為 1 和 0 的資料幀,以及一個與資料幀中每一列相關的向量,我想在資料幀中創建一個新列,它是資料幀中每一行和向量的總和。考慮這個例子:
dataframe <- data.frame(a = c(1, 1, 1), b = c(0, 1, 0), c = c(1, 1, 0))
> dataframe
a b c
1 1 0 1
2 1 1 1
3 1 0 0
> nums <- c(100, 200, 300)
> nums
[1] 100 200 300
然后我希望列 d 等于 (400, 600, 100)。我知道我可以通過撰寫回圈來做到這一點,但我正在嘗試使用 mutate 和 crossprod 并且收到錯誤“需要數字/復雜矩陣/向量引數”
謝謝!
uj5u.com熱心網友回復:
你可以這樣做:
dataframe %>% mutate(d = as.matrix(.) %*% nums)
#> a b c d
#> 1 1 0 1 400
#> 2 1 1 1 600
#> 3 1 0 0 100
或者
dataframe %>% mutate(d = crossprod(t(as.matrix(.)), nums))
#> a b c d
#> 1 1 0 1 400
#> 2 1 1 1 600
#> 3 1 0 0 100
uj5u.com熱心網友回復:
dataframe %>%
mutate(d = crossprod(dataframe %>% data.matrix %>% t, nums))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/318541.html
上一篇:根據R中的變數名規則創建新變數
下一篇:在R中標記運行的開始和結束
