【问题标题】:Getting value rather than formula in RGoogleDocs在 RGoogleDocs 中获取价值而不是公式
【发布时间】:2010-11-26 14:15:02
【问题描述】:

是否有一种简单的方法可以读取单元格的值而不是公式? 顺便说一句,我只在我发布的电子表格中遇到这个问题,而不是在私人电子表格中。 因此,例如在一个单元格中,其值是通过简单地使用谷歌电子表格左侧单元格中的值创建的,我更愿意获取该值而不是=RC[-1]

如果使用 Google 电子表格将其导出为 csv,则不会发生这种情况。

我在 R 中使用以下代码行

y2009<-sheetAsMatrix(ts2$y2009,header=TRUE, as.data.frame=TRUE, trim=TRUE)

【问题讨论】:

  • 我使用的大多数电子表格都是私有的,少数是公开的。因为我处于那种混合环境中,所以我更喜欢在 RGooglDocs 中完成所有工作。
  • 无法复制,抱歉。您是否将所有内容都更新到了最新版本?
  • @Joris Meys:不幸的是,复制在这里不是问题:) 如果您制作一个私人工作表,其中一些单元格链接(等于)其他单元格,您将获得=RC[-x] 字符串而不是实际值。
  • 我正在使用最新版本的 RGoogleDocs,因为我在 Windows 中工作,所以它有一个软件包的二进制文件。我下载并使用了 RGoogleDocs_0.4-1.zip

标签: r google-docs


【解决方案1】:

最初的问题写于 2009 年 9 月。当时我正在使用 RGoogleDocs 来阅读谷歌电子表格。在过去的几个月里,我发现了一个由加拿大不列颠哥伦比亚省的 Jennifer Bryan 和 Joanna Zhao 积极创建和维护的包“googlesheets: Manage Google Spreadsheets from R”。起初它只在 GitHub 上,现在它在 Cran 存储库中。它运作良好。它有利于阅读和写作。它不会暴露一个人的谷歌密码。我以前在 RGoogleDocs 中遇到的所有问题都已被 googlesheets 变得无关紧要。

【讨论】:

    【解决方案2】:

    不是一个聪明的解决方案,但评估公式确实有效。例如使用以下函数:

    getValues <- function(x) {
        m <- apply(x, 2, function(x) as.character(x))
        for (i in 1:nrow(m)) {
            formulas <- which(substr(m[i,], 1, 4) == "=RC[")
            t <- sub('=RC[', '', m[i, formulas], fixed=TRUE)
            t <- sub(']', '', t, fixed=TRUE)
            t <- as.numeric(t)
            m[i, formulas] <- m[i, (formulas + t)]
        }
        return(m)
    }
    

    getValues(y2009) 应该返回一个包含所有必需值的数据框。我知道这是一个非常愚蠢的“解决方案”,有很多妥协,但我希望你可以为这项任务编写更清晰的函数! :)

    【讨论】:

    • 当然,聪明的regexpr 会简化函数,但不幸的是我对正则表达式没有深入的经验:(
    • 感谢您的尝试,但它不起作用。在我对问题的最新迭代中,列中的公式是 =RC[-2]&"_"&RC[-1]。这很简单。它将单元格左侧 2 的内容粘贴到左侧单元格的内容中,并在两个字符值之间放置一个下划线。我能够轻松地在 R 中复制它,但它仍然不能解决我的 RGoogleDocs 的基本问题是导入公式而不是公式的值。我今天尝试的电子表格已发布,因此知道链接的任何人都可以查看它,但我仍在通过 getGoogleAuth 登录
    • @Farrel:我明白了。我以为您拥有所有这些简单的“功能”。更深层次的编码可能会“解决”您的问题,尽管我不知道导致这种奇怪事件的原因是什么。我稍后会回来看看你是否能解决这个问题!
    【解决方案3】:

    如果你没有偶然发现这个网页,它看起来很有用(我自己没有尝试过......)

    http://blog.revolutionanalytics.com/2009/09/how-to-use-a-google-spreadsheet-as-data-in-r.html

    看起来以前使用的包(RGoogleData)目前正在维护中。

    祝你好运!

    【讨论】:

    • 实际上,该页面上的解决方案不依赖于任何 R 包。只要您对公开访问 Google 电子表格没有任何问题,它就可以很好地工作。
    • 是的,我应该在那里分开我的想法。我只是说,如果该页面上的信息不起作用,还有 RGoogleData 包目前无法使用。
    • 也许你也想看看这个:thebiobucket.blogspot.com/2012/03/…
    猜你喜欢
    • 2016-04-18
    • 2014-12-18
    • 2017-08-26
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 2016-01-25
    相关资源
    最近更新 更多