我想了解为什么下面的代码会显示警告信息。
x <- c(1, 2, 3)
y <- c(4, 5, 6)
df <- data.frame(x, y)
rownames(df) <- c("A1", "A2", "B1")
df$V <- "Others"
df[which(grep(".*1$", rownames(df)) > 0)]$V <- "Primary"
警告讯息:
[<-.data.frame
(*tmp*
,(grep(&#34;。* 1 $&#34;, rownames(df))&gt; :提供3个变量来替换2个变量
length(which(grep(".*1$", rownames(df)) > 0)) #2
答案 0 :(得分:2)
df[which(grep(".*1$", rownames(df)) > 0)]
上面的行将返回没有最后一列(V)的df,这意味着当使用$V
R时,无法找到第V列,并且您无法分配任何列第V栏中的值。
答案 1 :(得分:1)
您应该使用df[which(grep(".*1$", rownames(df)) > 0), "V"]
或df$V[which(grep(".*1$", rownames(df)) > 0)]
。
df[which(grep(".*1$", rownames(df)) > 0), "V"] <- "Primary"
> df
x y V
A1 1 4 Primary
A2 2 5 Primary
B1 3 6 Others
您$V
的定位已关闭。