我想创建一个不同列的总和。在那里,我有一个for循环,它创建一个列的名称并获取总和。
伪数据是这样的:
row1 <- c(1,2,3)
row2 <- c(23,3,4)
df <- data.frame(row1, row2)
我想创建这样的东西:\
list <- c("row1", "row2")
for (i in 1:2){
name <- list[i]
var <- paste0("df$", name)
x <- sum(var)
print(x)
}
然而,这会引发以下错误:
Error in sum(x) : invalid 'type' (character) of argument
我出错的任何想法
答案 0 :(得分:0)
我不知道如何将字符串'df$row1'
转换为具有您想要的含义的变量df$row1
。但是,您可以使用R&#39的列表命名语法,使用该数据框中的名称直接访问df
的列。以下一个班轮将打印出list
向量中显示的每个列名的总和。
sapply(list, function(x) print(sum(df[[x]])))
<强>输出:强>
[1] 6
[1] 30
row1 row2
6 30