R:访问具有整数名称的向量

标签 r

我有一个大函数,它有一个定义如下的向量:

v <- mat.or.vec(length(communities), 1)
names(v) <- communities

然后,我按如下方式在循环中访问 v 的元素

for(c in communities){
  v[c] = 1
}

编写和测试此代码时,communities 列表是一个字符串列表。但是今天,当我在 communities 列表中具有所有整数值的数据集上运行它时,我的函数崩溃了。我花了一段时间才弄清楚,当 communities 是一个整数列表时,c 是一个整数并且 v[c] 访问 c<v 的 sup>th 元素,而不是 v 的名称为 c 的元素。

我可以通过使用类似 v[as.character(c)] 的东西来解决这个问题。有许多这样的变量面临同样的问题。

这个问题有没有更优雅的解决方案?

最佳答案

嗯,最简单的更改是在 for 语句中:

for(c in as.character(communities)){
  v[c] = 1
}

或向量化:

v[as.character(communities)] <- 1

或者为了获得更多控制权,您可以自己进行匹配:

idx <- match(communities, names(v))
v[idx] <- 1

关于R:访问具有整数名称的向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9050599/

相关文章:

r - 如何使用多个(3+)变量在 R 中创建数据透视表

重新排序闪避条形图 (ggplot2)

sql - 如何编写分位数聚合函数?

r - 尝试使用 "bnlearn"实现一个简单的朴素贝叶斯分类器。不断出现错误 "variables must be either numeric, factors or ordered factors"

php - combn r算法

重复代码以在数据框中添加空白行

r - 将误差线添加到多条线上以在 R 中的绘图上显示标准差

R : How to config ggplotly displaying values on the line graph?

r - 如何使用一行前后的数据为每一行创建子数据框

r - 如何以规范的方式将 as.list 扩展到 S4 对象