取两列

时间:2016-05-02 06:03:21

标签: r subset

我有两个数据:list包含271个值,listfull包含355个值(其中271个与列表中的相同)。我想要的是在这两个文件中打印出84个不同的值。当我编写代码以打印“相同”值时,它们可以工作,但不适用于“不同情况”。我试图找出原因,但不能。你可以帮我解决这个问题。感谢

list<-read.table("C:\\Data\\list.txt", header=T)
listfull<-read.table("C:\\Data\\listfull.txt", header=T)



for (i in 1:271)
{
  for (j in 1:355)
  {
    if(list$Cow_ID[i]==listfull$Cow_ID[j])
    bo<-data.frame(listfull[j,])

   }
    write.table(bo,"C:\\Data\\store.txt",row.names = FALSE, dec = ".", na = "NA", sep = " ", append = TRUE, col.names = FALSE)
}

//以上代码可以使用!

//但不是以下内容:

for (i in 1:355)
{
for (j in 1:271)
{
if(listfull$Cow_ID[i]!=listfull$Cow_ID[j])
  bo<-data.frame(listfull[i,])

  }

  write.table(bo,"C:\\Data\\store.txt",row.names = FALSE, dec = ".", na = "NA", sep = " ", append = TRUE, col.names = FALSE)
}

这里list和listfull的样子如下:

Lisfull List
Cow_ID  Cow_ID
26       26
32       32
35       35
219      219
302      302
308      308
383 
400 
441 
445 
446 
453 
462 

2 个答案:

答案 0 :(得分:5)

您可以尝试<script> System.config({ map: { app: 'dist/app' // <----- }, packages: { app: { format: 'register', defaultExtension: 'js' }, services: {defaultExtension: 'js'} } }); System.import('app/main') .then(null, console.error.bind(console)); </script>

例如,有一些可重复的例子:

setdiff(listfull$Cow_ID, list$Cow_ID)

您也可以使用l1=c(26, 32, 35, 219, 302, 308, 383, 400, 441) l2=c(26, 32, 35, 219, 302, 308) setdiff(l1, l2) > [1] 383 400 441 %in%,但我认为它不那么直截了当。

这是你想要的吗?

答案 1 :(得分:1)

如果你给我们一些数据可以更好(当你这样做时会更新这个答案)会更好,但为了得到不同,为什么不尝试:

listfull$Cow_ID[!listfull$Cow_ID %in% list$Cow_ID]

增加的好处是你不再需要for循环了。

<强>更新

查看您的数据。上面的代码应该可以正常工作。