我认为这很简单。我有一个名为df的数据框。它有51列。每列中的行包含随机整数。我想要做的所有循环是在每列的所有行中添加所有整数,然后将每个列的输出存储在单独的列表或数据框中。 df看起来像这样
Col1 col2 col3 col4
34 12 33 67
22 1 56 66
等
我想要的输出是:
Col1 col2 col3 col4
56 13 89 133
我确实想把它作为一个循环来实现,因为我想将我在这里学到的东西应用到具有类似输出的更复杂的脚本中,我需要快速完成 - 不能完全掌握函数...
答案 0 :(得分:2)
您可以使用内置函数colSums
:
> df <- data.frame(col1 = c(1,2,3), col2 = c(2,3,4))
> colSums(df)
col1 col2
6 9
使用循环的另一个选项:
# Create the result data frame
> res <- data.frame(df[1,], row.names = c('count'))
# Populate the results
> for(n in 1:ncol(df)) { res[colnames(df)[n]] <- sum(df[n]) }
col1 col2
6 9
答案 1 :(得分:1)
如果你真的想在矢量化解决方案上使用循环,请使用apply
循环遍历列(第二个参数等于2
,1
循环遍历行),提到你想要的功能(这里sum
):
df = data.frame(col1=1:3,col2=2:4,col3=3:5)
apply(df, 2, sum)
#col1 col2 col3
# 6 9 12