論理的でなければならないこのコードはsubset.defaultでエラー(SOS1、grepl(M、SOS1)): 'サブセット'
エラー(SOS1、grepl(M、SOS1))を生成しています: 'サブセット' 論理的でなければならない
unik
はc("900-12004-2501-0008000FOX1 SFOX1", 900-12004-2510-0008000FOX1 SFOX1", 900-12005-0120-0008000FOX1 SFOX')
をしてください含まc("900-12004-2501-000", "900-12004-2510-000", "900-12005-0120-000")
sos1
が含まれていますあなたは1からnrow(miss)
に変数i
ランを実行しているので、あなたは、エラーメッセージが表示されます
x <- nrow(miss)
unik <- unique(miss$Material.Number)
unik1 <- as.character(unik)
sos <- read.xlsx("trprod.xlsx", sheet = 1)
sos1 <- as.character(sos$Source.of.Supply)
output <- c()
for (i in 1:x)
{
m <- (unik1[i])
result <- subset(sos1, grepl(m, sos1))
if (length(result) == 0){
print('in if')
output <- c(output, m)
}
}
、あなたに
subset
操作を変更します論理値を返さない 'grepl()'関数があります。 – R18'ライブラリ(dplyr)result < - filter(sos1、grepl(m、sos1))'私は自分のrstudioでそれをチェックして試してみます。 – Adamm
@ R18 'grepl()'は論理ベクトルを返します。 @ sap6370 'dput(miss $ Material.Number [1:20]')の出力を貼り付けるだけで、あなたの質問に作業データの例を含めてください。 – LAP