我有一个大函数,它有一个定义如下的向量:
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/