使用特定列之和的Lappy创建新的dataframe列
创建数据帧:使用特定列之和的Lappy创建新的dataframe列,r,R,创建数据帧: 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)) 我正在尝试创建一个新的列total,其值为8和12,这是id为1,2的行的c1和c2的总计 此处尝试使用Lappy创建列: lapply(res , sum(c('c1' , 'c2'))) 但返回错误: Error in sum(c
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))
我正在尝试创建一个新的列total
,其值为8和12,这是id为1,2的行的c1和c2的总计
此处尝试使用Lappy创建列:
lapply(res , sum(c('c1' , 'c2')))
但返回错误:
Error in sum(c("c1", "c2")) : invalid 'type' (character) of argument
如何对数据帧中的特定列求和
更新:
为了了解应用函数,我尝试仅使用Lappy实现。对于data.frames,通常更容易使用
apply
lappy
作用于向量。因此,要使用它,您需要首先使用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))
希望这能帮助您理解
lappy
这不就是rowsumes
即rowsumes(res[c('c1','c2'))
。。。或行和(res[,c(“c1”,“c2”))
res.t = as.data.frame(t(res[,c("c1","c2")]))
res$total = unlist(lapply(res.t, sum))