繁体   English   中英

R 循环列出变量的所有值

[英]R loop to list all the values of a variable

作为练习,我必须创建一个包含变量 (a$dep) 的所有不同值的向量。 可以使用以下代码创建此向量:unique(a$dep)

我需要使用 for 循环创建这个向量 我写了一个没有给出正确结果的循环,但我不明白问题出在哪里:

v<-vector()
    for (i in seq_along(a$dep)){
      v<-ifelse(a$dep[i] %in% v, v,c(v,a$dep[i]))
}

非常感谢您的帮助 !

根据描述,如果我们需要unique值, if条件就足够了,即if元素不是 ( ! ) %in% 'v',则循环遍历 'dep' 列的序列,append 该元素为 'v' 并更新'v' 通过赋值( <-

v <- vector()
for(i in seq_along(a$dep)) {if(!a$dep[i] %in% v) v <- c(v, a$dep[i])}

由于ifelse要求所有 arguments 具有相同的length ,“v”的长度是动态的,因为我们将元素连接到它,因此,“是”、“否”(总是长度 1 - a$dep[i] )长度不匹配.


ifelse的一种选择是启动一个长度与“dep”列长度相同的向量“v”,然后使用ifelse检查“dep”元素是否是整个向量的%in% (返回 TRUE/FALSE - 长度1),然后返回空白(是-“”-长度1),否则返回'dep的元素(否-a$dep[i]-长度1)

v <- character(nrow(a))
for(i in seq_along(a$dep)) v[i] <- ifelse(a$dep[i] %in% v, "", a$dep[i])

然后删除空白元素

v[v != ""]
#[1] "a" "b" "c" "e"

ifelse作为矢量化 function 很有用,在这里它的使用不是最佳的

数据

a <- data.frame(dep = c('a', 'b', 'a', 'c', 'e', 'a'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM