假设我有data.frame
名为df
x y z
1 2 3
2 3 4
3 4 5
1 3 4
2 4 5
我想
x
data.frame
,请执行func(df$y, df$z)
如何在没有循环的情况下执行此操作?
答案 0 :(得分:4)
您可以使用常规plyr
:
library(plyr)
dlply(df, .(x), function(sub_df) func(sub_df$y, sub_df$z))
# or ddply or daply as desired
或dplyr
:
library(dplyr)
df %>% group_by(x) %>% summarize(func(y, z))
或data.table
:
library(data.table)
df <- as.data.table(df)
df[, func(y, z), by = x]
答案 1 :(得分:2)
你在找这个吗?
# assume df is your data frame
library(dplyr)
df %>% group_by(x) %>% do(...)