【发布时间】:2018-11-12 21:35:06
【问题描述】:
我有一个包含七列的数据框 (Dataset_Events),其中两列是 eventInfo_ea 和 eventInfo_el。我想在 eventInfo_ea = 'add to cart' 的行中删除 eventInfo_el 的单元格值。请参阅下面的代码。
Remove = function(Dataset_Events, eventInfo_ea, eventInfo_el){
if(Dataset_Events[["eventInfo_ea"]]=="add to cart"){
Dataset_Events[["eventInfo_el"]] <- NULL
}
}
sapply(Dataset_Events, Remove)
不幸的是,R 给了我以下错误信息: “Dataset_Events[["eventInfo_ea"]] 中的错误:下标越界” 数据框的尺寸为 713478 x 7。 任何人都可以解释为什么以及如何解决它?
如果我只是简单地运行 if 条件本身,我会得到与 data.frame 长度相同的正确 TRUE/FALSE 回复
Dataset_Events[["eventInfo_ea"]]=="add to cart"
这里是两个相关列的示例数据集(两列都有类因子):
eventInfo_ea eventInfo_el
1 click thumbnail
2 click description
3 click hero image
4 click open size dropdown
5 click hero image
6 click hero image
7 click hero image
8 click description
9 click open size dropdown
10 click hero image
11 click hero image
12 click hero image
13 click hero image
14 click description
15 click open reviews
16 click hero image
17 click open reviews
18 click description
19 add to wishlist hero image
20 click hero image
21 click hero image
22 add to cart hero image
【问题讨论】:
-
欢迎来到 SO!一些事情:
Remove()有 3 个参数,但您只使用Dataset_Events。您可以将函数内的代码简单地命名为Dataset_Events[ Dataset_Events["eventInfo_ea"]=="add to cart", ]["eventInfo_el"] <- NULL,最后您希望将data.frame中的列传递给sapply。最后,发布示例数据集总是有帮助的,它使人们更容易测试他们的解决方案并为您提供帮助。
标签: r