如果名称是空字符串(例如“”),如何从向量中提取元素(按名称)?
a <- c(15,25)
names(a) <- c("", "second")
a[names(a)[2]]
#second
# 25
#a[names(a)[1]]
#<NA>
# NA
a
# second
# 15 25
谢谢!
编辑:感谢您的建议,但他们不允许我需要的灵活性。我应该澄清我的预期目标。假设我有一个向量:
fvec <- c("hi", "hi", "hi", "", "")
# ["hi", "hi", "hi", "", ""]
现在我想将此向量制表,然后用包含样本计数的新字符串替换实例。
# ["hi (n=3)", "hi (n=3)", "hi (n=3)", " (n=2)", " (n=2)"]
我一直在使用:
tab <- table(fvec)
# fvec
# hi
# 2 3
retval <- sprintf("%s (n=%d)", fvec, tab[fvec])
# "hi (n=3)" "hi (n=3)" "hi (n=3)" " (n=NA)" " (n=NA)"
答案 0 :(得分:2)
我们可以使用逻辑索引来提取元素
a[names(a)==""]
#15
或match
a[match("", names(a))]
关于OP sprintf
的输出,我们可以使用match
获得预期输出
sprintf("%s (n=%d)", fvec, tab[match(fvec, names(tab))])
#[1] "hi (n=3)" "hi (n=3)" "hi (n=3)" " (n=2)" " (n=2)"