【问题标题】:Convert vector of strings into a vector of objects-names将字符串向量转换为对象名称向量
【发布时间】:2017-04-20 01:22:57
【问题描述】:

示例数据:

a <- c("cat", "dog", "mouse")
b <- c("spoon", "fork", "knife")
c <- c("auto", "boot", "bike")

生成变量:

objects <-c(a,b,c)
strings <-c("a","b","c")

给我所有字符串的长度:

> nchar(objects)
[1] 3 3 5 5 4 5 4 4 4

> nchar(strings)
[1] 1 1 1

我必须对“字符串”做什么才能得到与“对象”相同的结果?

到目前为止我得到的最接近的:

> nchar(eval(parse(text=strings)))
[1] 4 4 4
> 

但剩下的在哪里?

【问题讨论】:

  • 相信你想要:nchar(unlist(lapply(strings,function(s) eval(parse(text=s)))))
  • 谢谢。我会在我的函数中测试你的答案,如果我得到我想要的结果,我会检查正确的答案。
  • 如果你需要一个for循环,这里有一个v1 &lt;- vector(); for(j in strings){ v1 &lt;- c(v1, nchar(get(j))) } > v1
  • @aichao。如果您回复我的帖子,我可以将您的评论设置为答案。

标签: r string object type-conversion


【解决方案1】:

我们可以使用mgetlistunlist中的对象的值返回给vector,得到nchar

nchar(unlist(mget(strings), use.names=FALSE))
#[1] 3 3 5 5 4 5 4 4 4

【讨论】:

    【解决方案2】:

    一种选择是在strings的每个元素上使用sapplyget元素的值并用nchar计算字符数

    c(sapply(strings, function(x) nchar(get(x))))
    #[1] 3 3 5 5 4 5 4 4 4
    

    【讨论】:

      【解决方案3】:

      关键是遍历strings的每个元素并应用eval(parse(text=s))。然后unlist 到一个向量并调用nchar

      nchar(unlist(lapply(strings,function(s) eval(parse(text=s)))))
      ##[1] 3 3 5 5 4 5 4 4 4
      

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2021-06-02
        • 1970-01-01
        • 1970-01-01
        • 2020-01-24
        • 1970-01-01
        • 2020-02-27
        • 1970-01-01
        • 2019-10-26
        • 1970-01-01
        相关资源
        最近更新 更多