【发布时间】:2022-02-07 13:12:11
【问题描述】:
我有一个包含 3000 多个项目的数据框(每行是一个新项目,第一列中包含 item_id),每个后续列中有 2500 多个属性。
item_id attribute_1 attribute_2 ... category_1 ... category_2
x3902 1 5 1 0
x1402 2 0 1 1
我能够成功抓取满足给定属性和类别的 10 个项目的随机列表:
subset_of_items = sample(subset(df$item_id, (df$attribute1 == 3 & df$category_2 == 1 )),10)
我需要对 30 多种属性 + 类别的组合重复此操作。所以我希望创建一个函数,将输出循环并保存到一个表中,其中每个表列是满足一组条件的 10 个项目的列表。
这是我所能得到的,但无法成功运行:
df <- read.csv ("data.csv",sep=",")
attribute <- c("attribute_1", "attribute_2", "attribute_3")
value <- c(1, 2, 5)
category <- c("category_1", "category_1", "category_2")
function1 <- function(x, attribute_x, value_x, category_x)
{
dftemp = subset(x[["item_id"]], (x[[attribute_x]] == value_x & x[[category_x]] == 1 ))
output <- cbind(output, dftemp)
}
function1(df, attribute, value, category)
蛋糕上的樱桃是将每一列命名为attribute_x。
【问题讨论】:
-
嗨,欢迎来到 SO!你能提供一些数据来处理吗?建议:您可以通过将
dput()的输出添加到您的数据(的子集)来编辑帖子。
标签: r function parameters subset cbind