- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在这里有一个脚本,它可以很好地在某个列中获取一个数字。现在我不仅要收集目录中每个文件的第一张纸,还要收集每个文件的每张纸。
现在 R 写入的 .csv 文件显示 2 列,A 列是文件名,B 是 R 抓取的数字。
我应该在下面的脚本中添加什么修改以使 csv 输出显示 3 列,A 是文件名,B 是工作表名,C 是数字?
require(xlsx)
#setwd
setwd("D:\\Transferred Files\\")
files <- (Sys.glob("*.xls"))
f<-length(files)
DF <- data.frame(txt=rep("", f),num=rep(NA, f),stringsAsFactors=FALSE)
# files loop
for(i in 1:f)
{
A<-read.xlsx(file=files[i],1,startColumn=1, endColumn=20, startRow=1, endRow=60)
#Find price
B<-as.data.frame.matrix(A)
P<-B[which(apply(B, 1, function(x) any(grepl("P", x)))),which(apply(B, 2, function(x) any(grepl("P",
x))))+6]
#fill price DF
DF[i, ] <-c(files[i],P)
}
write.csv(DF, "prices.csv", row.names=FALSE)
最佳答案
您有一个好的开始,但您正在询问如何将文件中的工作表添加到循环中。如果您阅读 ?read.xlsx
,你会在你的代码中看到你正在掩盖的两个参数(好吧,使用一个,忽略另一个):
Usage:
read.xlsx(file, sheetIndex, sheetName=NULL, rowIndex=NULL,
startRow=NULL, endRow=NULL, colIndex=NULL,
as.data.frame=TRUE, header=TRUE, colClasses=NA,
keepFormulas=FALSE, encoding="unknown", ...)
Arguments:
file: the path to the file to read.
sheetIndex: a number representing the sheet index in the workbook.
sheetName: a character string with the sheet name.
sheetIndex
)甚至“工作表名称是什么?” (对于
sheetName
)。
?getSheets
救援:
Usage:
getSheets(wb)
Arguments:
wb: a workbook object as returned by 'createWorksheet' or
'loadWorksheet'.
Value:
'getSheets' returns a list of java object references each pointing
to an worksheet. The list is named with the sheet names.
loadWorkbook(file)
而不是
read.xlsx
为了获得工作表名称,但稍微阅读手册将为您提供切换所需的信息。 (你可以使用类似
getSheets(loadWorkbook(file))
的东西,但根据我的经验,我尽量避免在同一个脚本中多次打开同一个文件,不管自动关闭。)
readxl
包在其简单性、速度和稳定性方面显示出希望。它有
excel_sheets()
和
read_excel()
那应该可以满足您的需求。 (事实上,这就是它的全部......简单是“一件好事(tm)”。)
library(XLConnect)
## Loading required package: XLConnectJars
## XLConnect 0.2-11 by Mirai Solutions GmbH [aut],
## Martin Studer [cre],
## The Apache Software Foundation [ctb, cph] (Apache POI, Apache Commons
## Codec),
## Stephen Colebourne [ctb, cph] (Joda-Time Java library)
## http://www.mirai-solutions.com ,
## http://miraisolutions.wordpress.com
## Attaching package: 'XLConnect'
## The following objects are masked from 'package:xlsx':
## createFreezePane, createSheet, createSplitPane, getCellStyle, getSheets, loadWorkbook, removeSheet, saveWorkbook, setCellStyle, setColumnWidth, setRowHeight
wb1 <- loadWorkbook('Book1.xlsx')
shts1 <- getSheets(wb1)
shts1
## [1] "Orig" "Sheet2" "Sheet8" "Sheet3" "Sheet4" "Sheet5" "Sheet6" "Sheet7"
for (ws in shts1) {
message(ws) # just announcing myself
dat <- readWorksheet(wb1, ws)
message(paste(dim(dat), collapse=' x ')) # do something meaningful, not this
}
## Orig
## 128 x 11
## Sheet2
## 128 x 11
## Sheet8
## 128 x 19
## Sheet3
## 17 x 11
## Sheet4
## 128 x 11
## Sheet5
## 128 x 11
## Sheet6
## 128 x 11
## Sheet7
## 128 x 11
library(XLConnect)
for (fn in list.files(pattern="*.xlsx")) {
message('Opening: ', fn)
wb <- loadWorkbook(fn)
shts <- getSheets(wb)
message(sprintf(' %d Sheets: %s', length(shts),
paste(shts, collapse=', ')))
for (sh in shts) {
dat <- readWorksheet(wb, sh)
## do something meaningful with the data
}
}
for
示例)是将所有内容包含在列表中:
dat <- sapply(list.files(pattern='*.xlsx'), function(fn) {
wb <- loadWorkbook(fn)
sapply(getSheets(wb), function(sh) readWorksheet(wb, sh))
})
str(dat, list.len=2)
## List of 4
## $ Book1.xlsx:List of 8
## ..$ Orig :'data.frame': 128 obs. of 11 variables:
## .. ..$ i : num [1:128] 1 2 3 4 5 6 7 8 9 10 ...
## .. ..$ x : num [1:128] 1606527 7484 437881 1601729 1341668 ...
## .. .. [list output truncated]
## ..$ Sheet2:'data.frame': 128 obs. of 11 variables:
## .. ..$ i : num [1:128] 1 2 3 4 5 6 7 8 9 10 ...
## .. ..$ x : num [1:128] 1606527 7484 437881 1601729 1341668 ...
## .. .. [list output truncated]
## .. [list output truncated]
## $ Book2.xlsx:List of 8
## ..$ Orig :'data.frame': 128 obs. of 11 variables:
## .. ..$ i : num [1:128] 1 2 3 4 5 6 7 8 9 10 ...
## .. ..$ x : num [1:128] 1606527 7484 437881 1601729 1341668 ...
## .. .. [list output truncated]
## ..$ Sheet2:'data.frame': 128 obs. of 11 variables:
## .. ..$ i : num [1:128] 1 2 3 4 5 6 7 8 9 10 ...
## .. ..$ x : num [1:128] 1606527 7484 437881 1601729 1341668 ...
## .. .. [list output truncated]
## .. [list output truncated]
## [list output truncated]
flatdat <- unlist(dat, recur=FALSE)
str(flatdat, list.len=3)
## List of 555
## $ Book1.xlsx.Orig :'data.frame': 128 obs. of 11 variables:
## ..$ i : num [1:128] 1 2 3 4 5 6 7 8 9 10 ...
## ..$ x : num [1:128] 1606527 7484 437881 1601729 1341668 ...
## ..$ c1 : num [1:128] 1 1 1 1 1 1 1 1 1 1 ...
## .. [list output truncated]
## $ Book1.xlsx.Sheet2:'data.frame': 128 obs. of 11 variables:
## ..$ i : num [1:128] 1 2 3 4 5 6 7 8 9 10 ...
## ..$ x : num [1:128] 1606527 7484 437881 1601729 1341668 ...
## ..$ c1 : num [1:128] 1 1 1 1 1 1 1 1 1 1 ...
## .. [list output truncated]
## $ Book1.xlsx.Sheet8:'data.frame': 128 obs. of 19 variables:
## ..$ i : num [1:128] 1 2 3 4 5 6 7 8 9 10 ...
## ..$ x : num [1:128] 1606527 7484 437881 1601729 1341668 ...
## ..$ c1 : num [1:128] 1 1 1 1 1 1 1 1 1 1 ...
## .. [list output truncated]
## [list output truncated]
关于r - 如何编写R来循环设置目录中每个文件的每个工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30402461/
我最近一直在学习 Clojure。 Clojure 世界中是否有类似 Scala 的工作表这样的东西,我可以在其中放入任何代码并在保存后立即对其进行评估?或者也许 Clojure 有类似的解决方案?
有人可以帮我吗?我想知道如何过滤工作表中的多个选项卡(C1-C19)。这是我所做的: 我创建了一张表格,将所有回复存储在我的谷歌表单(事件注册表单)中。每个参与者将收到一个坦克编号,每个坦克编号根据其
这就是我将打开的面板显示为 float 窗口的方式。 有人可以帮我将面板作为工作表运行吗?窗口对象是mWindow。我使用的许多标准代码都已被折旧。 NSOpenPanel *openPanel =
当您仅键入 worksheets() 时,默认范围 ActiveWorkbook 或 ThisWorkbook 是什么?对于那些不了解这些区别的人来说,它们非常重要,尤其是在 Excel 2013 中
我有一个带有一些图表的 HTML 页面。我想要做的是编写一个加载 javascript 函数,它将从 excel 表中读取值,将它们存储在变量中并在 html 页面上使用它们。我的问题是是否有任何 j
我需要将参数 callFrom 传递给 SwiftUI 中的工作表。 奇怪的是,该参数在第一次调用时没有使用,但对以下调用有效。 import SwiftUI struct ContentView:
我试着 var tempSheet = wrksheets[sheetName] as Worksheet; 在哪里 wrksheets是类型表 sheetName 是“带空格的工作表名称” 如果
该函数用作“ Assets 类别分配”引擎(在参数范围内具有约束)并在数组的每一行上模拟投资组合模型。我尝试使用四种方法将数组发布到工作表上,但每种方法都失败了。 对于 Assets A、B、C、D
目前,我的 excel 文件有两张表,一张名为“English”,一张名为“French”。 我以编程方式打开我的工作簿并编辑我的英文表,没有任何问题。当我打开第二张工作表时,出现以下错误: The
我添加了一个 VBA 表单 userform和一个模块 Module1在 Excel 中打开 Microsoft VBA 编辑器 (Alt+F11)。 现在,每当我打开任何其他 Excel 时,按 A
在单个 Excel 工作簿中,我想选择各种工作表来运行 VBA 子例程。我找到了显示如何遍历选定工作表的代码,它使用“MsgBox sh.Name”;但是,当我将代码放入其中时,它只会影响选择的最后一
我想知道是否有一个函数可以在 Excel 中加载特定于 Python 的工作表,例如,如果我有 34 张工作表只加载前 25 张工作表。通过以下行,我加载了所有工作表。 xlsx=pd.ExcelFi
我有一个名为“A”、“B”、“C”等的工作表的 xlsx。我需要形成一个名称为“A”、“B”、“C”的表作为第一列,以及来自的一些数据每个工作表中与第二列相同的单元格。例如,这可能看起来像: S
我有一张用密码保护的工作表。当我使用 VBA 更改该表上的任何内容时,我会像这样取消保护: Private Sub Worksheet_Change(ByVal target As Range)
我想将 Excel 文档插入 Excel 工作表。我可以通过以下步骤手动执行此操作; 插入/文本/对象/从文件创建(勾选显示为图标)/浏览。 然后我选择文件并插入文档。 我想通过宏来做到这一点。 (录
是否可以创建 批处理文件那将执行以下操作? 重命名 Excel 文件中的单个工作表(不是 Excel 工作簿/文件本身) 将简单格式应用于 Excel 文件 - 例如,将字体和字体大小应用于整个工作簿
Private Sub CommandButton1_Click() Dim ws As Worksheet With Application.FileDialog(msoFileDialog
我想知道是否可以在不复制该工作表的情况下引用另一本工作簿中的 Excel 工作表? 情况:我有一些非常大的工作表,其中充满了各种数据,但我不想在我的工作簿中保留它们的副本,因为虽然每个工作簿都使用相同
我有这个 Python 字典,我想将这个数据写入 Excel 文件。 注意:有很多类别,每个类别有很多汽车(为简单起见,我使用了 2 个类别) data = {"Category": {"Diesel
我有一个 excel 工作簿,在工作簿中我有 2 张名为 Front Page 和 Drafting 的工作表。起草工作表引用了首页工作表中的一些值。这只是一个基本的引用 我有像这样的公式:='Fro
我是一名优秀的程序员,十分优秀!