无法理解警告

时间:2017-05-23 11:03:28

标签: r

我想了解为什么下面的代码会显示警告信息。

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

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的定位已关闭。