我有数据框“数据”。我使用grep函数搜索了一个模式,我想将结果放回数据框中以匹配其他行。
data$CleanDim<-data$RAW_MATERIAL_DIMENSION[grep("^BAC",data$RAW_MATERIAL_DIMENSION)]
我想将结果粘贴到新列data$CleanDim
但我收到以下错误....有人可以帮助我吗?
Error in `$<-.data.frame`(`*tmp*`, CleanDim, value = c(1393L, 1405L, 734L, : replacement has 2035 rows, data has 1881
答案 0 :(得分:0)
AdjustWindowRectEx
返回符合给定条件的条目索引向量。
您的代码在此处工作的唯一方法是,grep()
的行数是否等于data
找到的匹配数的偶数倍。
考虑以下可重现的例子:
grep()
注意:如果原始data = data.frame(RAW_MATERIAL_DIMENSION = c("BAC","bBAC","aBAC","BACK","lbd"))
> data
RAW_MATERIAL_DIMENSION
1 BAC
2 bBAC
3 aBAC
4 BACK
5 lbd
> grep("^BAC",data$RAW_MATERIAL_DIMENSION)
[1] 1 4
data$CleanDim <- data$RAW_MATERIAL_DIMENSION[grep("^BAC",data$RAW_MATERIAL_DIMENSION)]
Error in `$<-.data.frame`(`*tmp*`, CleanDim, value = 1:2) :
replacement has 2 rows, data has 5
对象只有前四行,这可能会很好(尽管它会很奇怪)。在这种情况下,您只需在新列中填充重复值。
但是,你想要做的是查看data
的结果,并考虑在你的背景下哪些是明智的。只有当此结果的长度等于grep("^BAC",data$RAW_MATERIAL_DIMENSION)
对象的长度时,或者至少如果您的数据对象是该长度的整数倍,您的操作才会起作用。