作爲更大更復雜的代碼體的一部分,我遇到了dplyr/local數據框挑戰。按照下面示出了簡化的示例中,代碼包括在基礎R作品子集的一個基本類型:R dplyr - 本地數據框的子集化錯誤
#creation of data frame
dat=data.frame(group=c(rep(c("a","b","c","d"),2)),value=(seq(1,8,1)))
othergroup=dat[dat[,"group"]==dat[2,"group"],]
othergroup
此得到所需的答案:
group value
2 b 2
6 b 6
#loading dplyr
require(dplyr)
othergroup=dat[dat[,"group"]==dat[2,"group"],]
othergroup #still works
剛剛加載dplyr後,所有仍然有效。但是,在運行dplyr操作之後,會創建一個不再允許類似子集的本地數據框。
#pro-forma dplyr operation
dat = dat %>%
group_by(group)
othergroup=dat[dat[,"group"]==dat[2,"group"],] #error message
Error in Ops.data.frame(dat[, "group"], dat[2, "group"]) :
‘==’ only defined for equally-sized data frames
據我所知,可以使用dplyr中的select函數,但我想重新使用一些現有的代碼。有沒有辦法將dplyr生成的「本地數據框」強制回到常規數據框中?