2

以下是数据集,我需要制作两个。

ID <- 1:4
pos <- c(0, 245, 567, 871)
A1 <- c("A/B", "A/A", "B/B", "A/A")
B1 <- c("B/B", "C/C", "C/B", "D/A")
C1 <- c("B/B", "C/C", "-/-", "D/A")
mydf2 <- data.frame (ID, A1, B1, C1, pos)

我有兴趣在一个数据集中有 2:4 列

mydf3 <- mydf2[,2:4]

现在我想要不同数据框中的其余变量。

mydf4 <-  mydf2[, names(mydf2) != names(mydf3)]

我错过了一些明显的东西吗?

Warning message:
In names(mydf2) != names(mydf3) :
  longer object length is not a multiple of shorter object length
4

1 回答 1

3

你想要:

mydf4 <- mydf2[, ! names(mydf2) %in% names(mydf3)]

您收到了您所做的错误消息,因为该!=运算符对其两个向量参数进行了元素比较。当向量具有不同的长度时,它会回收较短的向量以将其填充到较长向量的长度。你传递了长度为 3 和 5 的向量,因为这两个数字都不是另一个数字的除数,所以它暗示你可能实际上并不想要这种回收行为,并警告你它在做什么。(比较2:4 != 1:6to的结果,2:4 != 1:5看看调试起来可能更加令人费解。)

于 2012-04-27T19:17:33.500 回答