创建数据框:
res <- data.frame("ID" = c(1,2), "str" = c(21,15), "c" = c("a1","a2"), "s" = c("s1","s2"), "c1" = c(2,4), "c2" = c(6,8))
值:
ID str c s c1 c2
1 1 21 a1 s1 2 6
2 2 15 a2 s2 4 8
我尝试使用值8和12创建新列total
,这些列是c1的总数,c2用于ID为1,2的行
这里尝试使用lapply来创建列:
lapply(res , sum(c('c1' , 'c2')))
但返回错误:
Error in sum(c("c1", "c2")) : invalid 'type' (character) of argument
如何对数据框中的特定列求和?
更新:
要了解应用函数,我尝试仅使用lapply实现。
答案 0 :(得分:1)
对于data.frames,通常更容易使用apply
。 lapply
适用于矢量。因此,要使用它,您需要首先使用t
转换data.frame,这会产生一个矩阵,您可以将其更改为data.frame。因为`lapply'创建了一个列表,你可以使用unlist来获取一个可以从一开始就存储到data.frame中的向量。
res.t = as.data.frame(t(res[,c("c1","c2")]))
res$total = unlist(lapply(res.t, sum))
希望能帮助您理解lapply
。