a <- c(1,2,3,4)
条件a> 2,我想要一个向量b =(0,0,1,1)。 目前我正在使用以下方法。有什么简单的方法吗?
b <- (a > 2)
b[b == TRUE] <- 1
b[b == FALSE] <- 0
答案 0 :(得分:6)
有几种方法可以解决这个问题。
使用def __init__(self, master):
self.counter = count(1)
…(more code)…
def submit(self):
my_id = self.counter.next()
…(more code)…
ifelse
这只是一种更简单的方式来准确写出你在问题中写的内容:如果条件返回b <- ifelse(a > 2, 1, 0)
,则将值设置为1,否则将其设置为0.
使用TRUE
as.numeric
使用此功能可以轻松地将逻辑值转换为数字等价物。正如人们所料,b <- as.numeric(a > 2)
设置为1而TRUE
设置为0。
FALSE
as.numeric
当R看到逻辑值乘以数值时,它会自动将逻辑强制转换为它们的数字等价物。因此,逻辑值可以通过乘以1来懒惰地转换(从程序员的角度来看)。
答案 1 :(得分:3)
r编码逻辑数据的方式,你的向量b <- a > 2
已经是(0,0,1,1) - r存储&#34; TRUE&#34;值为1&#39;和#34; FALSE&#34;值为0&#39; s。你甚至可以拿mean(b)
然后它会返回.5。但是,如果您更喜欢可视化数字而不是逻辑值,那么您可以随时执行b <- as.numeric(b)
,或者将其全部放在一行代码中b <- as.numeric(a > 2)