【问题标题】:Combine Logical Operators [closed]组合逻辑运算符 [关闭]
【发布时间】:2012-11-01 11:05:32
【问题描述】:

我对 R 很陌生,我有一个简单的问题,我就是想不出一个简单的问题。 我想组合两个逻辑语句,即我想从分析中排除两列 要仅排除一个值,代码可以正常工作,如下所示:

df[ colnames(df) != "Total.Population", function(x){ x/df$Total.Population *1000 }

所以除了人口之外,我还想从我的分析中排除 Geocodes 列。我尝试了很多不同的东西,比如

df[ colnames(df) != "Total.Population"&&"Geocodes", function(x){ x/df$Total.Population *1000 }

但我无法完成它为我工作...... 所以任何帮助都会很棒。谢谢

【问题讨论】:

  • && 并不意味着您想要的AND AND。您正在寻找 %in% -- 您的代码目前无法重现。
  • 你错过了一个结束],甚至超出了你的代码目前没有意义。 function(x) 返回一个函数,而不是该函数的值。
  • 这只是代码的一小部分。所以整个代码看起来像这样:agriculture <-read.table ("C:\\Users\\etc….) attach(agriculture) df<-data.frame(agriculture) df.per.capita <- as.data.frame( sapply( df[ colnames(df) != "Total.Population" %in% "Geocode"], function(x){ x/df$Total.Population *1000 } ) ) detach(agriculture)
  • 但是 %in% 也不起作用。没有错误警告,但仍然处理了两列
  • 你需要做df[ !colnames(df) %in%c('name1','name2')]

标签: r logical-operators


【解决方案1】:

你没有关闭 ] 。请编辑。至于逻辑运算符:您想选择某些列索引,但您已经“锁定”了比较。这样做:

 Rgames> foo
   one two three four five
1   1   5     9   13   17
2   2   6    10   14   18
3   3   7    11   15   19
4   4   8    12   16   20

Rgames> foo[ (colnames(foo) != "three")&(colnames(foo)!='two')]
one four five
1   1   13   17
2   2   14   18
3   3   15   19
4   4   16   20

【讨论】:

  • 好的。这个成功了!非常感谢您的解释!
猜你喜欢
  • 1970-01-01
  • 2020-04-14
  • 2014-03-18
  • 2019-12-21
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2012-11-17
相关资源
最近更新 更多