我正在尝试使用Range库将值写入垂直RDCOMClient。由于RDCOMClient允许您编写与VBA非常相似的代码,所以我一直在寻找在VBA中实现此操作的方法,然后将其转换为R。
创建excel的基本R代码是:
app <- COMCreate("Excel.Application")
app[['Visible']] <- TRUE
workbook <- app$WorkBooks()$Open(path)
sheet <- workbook$Worksheets(sheet_name)
sheet$Activate()如果我的Range是水平,那么我可以简单地将它写成:
由于Range是垂直,所以代码是:
问题是,用于垂直情况的R“转换”不适用于。
在控制台中打印range[['Value']]显示:
[[1]]
[[1]][[1]]
NULL
[[1]][[2]]
NULL
[[1]][[3]]
NULLapp$Transpose(c(1,2,3))显示:
[[1]]
[[1]][[1]]
[1] 1
[[1]][[2]]
[1] 2
[[1]][[3]]
[1] 3为什么它没有正确地设置值?正确的方法是什么?
我还尝试使用矩阵:
range[['Value']] <- matrix(nrow = 3, c(1,2,3))但它给出了一个错误:
Can't attach the RDCOMServer package needed to create a generic COM object我还尝试直接设置range[['Value']][[1]],但没有成功。
发布于 2021-02-16 15:21:48
将单元格中的垂直1:7放在B3到B9中
r= sheet$Range("B3:B9")
r[["Value"]] <- asCOMArray(matrix(1:7, 7, 1))https://stackoverflow.com/questions/50178773
复制相似问题