r - R循环列出变量的所有值
问题描述
作为练习,我必须创建一个包含变量 (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
条件就足够了,即遍历“dep”列的序列,if
元素不是(!
)%in%
“v”,将该元素附加到“v”并通过赋值更新“v”(<-
)
v <- vector()
for(i in seq_along(a$dep)) {if(!a$dep[i] %in% v) v <- c(v, a$dep[i])}
由于ifelse
要求所有参数都相同length
,所以当我们将元素连接到它时,'v' 的长度是动态的,因此,'yes'、'no'(总是长度 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
函数很有用,在这里它的使用不是最佳的
数据
a <- data.frame(dep = c('a', 'b', 'a', 'c', 'e', 'a'))
推荐阅读
- amazon-s3 - S3 写入访问被拒绝 - 存储桶需要不同的策略
- javascript - 表单提交不起作用 - html、css 和 javascript,也无法隐藏表单
- python - 在 Python 中输入对象命名空间
- asp.net - 如何将所有已下订单保存在 ASP.NET 的“MyOrder”表中
- javascript - 在返回值之前在函数内部添加超时函数
- elasticsearch - 使用 fluent-bit 与 kubernetes 过滤器和 elasticsearch 输出时丢失日志条目
- python - 抓取嵌套类别后无法将产品页面提供给单独的方法
- google-sheets - How to disable copy and paste among cells?
- function - Return a string in a function
- firebase - Get data from two collections - Firebase/Flutter