我想在tableGrob中自定义特定列,对于这个可重复的示例,我选择了查看自定义理由.
假设您有以下数据帧:
df <- data.frame(Order = c(1:3), Name = c("Adam", "Ben", "Charlie"), Score = c(4, 8, 9))
Run Code Online (Sandbox Code Playgroud)
并且您想使用该包gridExtra来呈现表:
dfGrob <- tableGrob(df, rows = NULL)
grid.arrange(dfGrob)
Run Code Online (Sandbox Code Playgroud)
您可以通过调整用于构建grob的主题来调整列的对齐方式,例如:
tt1 <- ttheme_default(core=list(fg_params=list(hjust= 0, x=0.05)),
colhead=list(fg_params=list(hjust=0, x=0.1)))
dfGrob <- tableGrob(df, rows = NULL, theme = tt1)
grid.arrange(dfGrob)
Run Code Online (Sandbox Code Playgroud)
但是,这会调整所有列的对齐方式.假设我只想离开订单栏的合理性,并将其他人留在他们的中心理由位置,我该怎么做?
我试验过:
tt1 <- ttheme_default(core=list(fg_params=list(hjust= c(0, 0.5, 0.5), x=c(0.15, 0.5, 0.5))),
colhead=list(fg_params=list(hjust=1, x=0.95)))
dfGrob <- tableGrob(df, rows = NULL, theme = tt1)
grid.arrange(dfGrob)
Run Code Online (Sandbox Code Playgroud)
但这似乎只是按行定制.如何调整此代码以按列自定义?
read_excel在具有特定xlsm文件的特定计算机上使用时,我的读取时间非常慢.在两台不同的机器上读取相同的xlsm文件,我的读取时间为72秒,而0.2秒.较慢的机器实际上具有更多的计算能力.
两台机器都是Windows,我readxl在两台机器上使用的是1.1.0版本.我尝试在较慢的机器上使用软件包v1.2.0,同样的问题仍然存在.
在过去的两年里,我一直在读这个xlsm文件到R +没有任何问题.在这两年里,我经常在excel文件上运行一组宏.然而,现在,当我运行相同的宏并保存文件时,较慢的机器现在需要70s而不是<1s将其读入R.如果我要求较慢的机器读取旧版本的xlsm文件它没有问题.该文件大约是15MB.我要求read_excel读取的xlsm文件的哪个选项卡无关紧要,时间仍然是大约70秒.
我已更新R(v3.5.2)并确保所有readxl包依赖项都是最新的.我不知道还有什么可以尝试,任何想法都会非常感激.
我正在寻找从 R 创建一个 csv ,其中没有一个值在它们周围有引号。当您在 excel 中创建 CSV 而不是在 R 中时,这似乎是常态。
以下面的例子为例:
set.seed(100)
df <- data.frame(Apples=sample(1:10, 5), Oranges=sample(1:10, 5), Bananas=sample(1:10, 5), Dates=sample(1:10, 5))
write.table(df, sep=",", row.names = FALSE)
Run Code Online (Sandbox Code Playgroud)
如果您在记事本中打开它,您会看到列标题周围有引号。如果要成功将 csv 导入到另一个程序中,我需要它没有引号。
我注意到在 Excel 中重新保存 csv 会导致引号消失,但我需要避免执行此步骤。
我尝试过类似的事情col.names = noquote(colnames(LineupCSV))作为论据,write.table但没有成功。
在 R 中编写 csv 时,如何删除值周围的引号?
我有一个值向量,希望用于修改嵌套列表的一致组件。目前,我正在使用for循环来执行此操作,事实证明它相当慢,并且我想知道是否有更快的方法可以执行此操作。
通过可重现的示例:
#Create Data and List
set.seed(100)
Students <- c("Amy", "Ben", "Caz")
Subject <- c("Maths", "English", "Science")
ExamResults <- lapply(Students, function (r) {
Scores <- lapply(Subject, function(x) round(runif(4, 0, 100)))
names(Scores) <- Subject
Scores
})
names(ExamResults) <- Students
Run Code Online (Sandbox Code Playgroud)
这将创建一个如下所示的列表:
$Amy
$Amy$Maths
[1] 31 26 55 6
$Amy$English
[1] 47 48 81 37
$Amy$Science
[1] 55 17 62 88
$Ben
$Ben$Maths
[1] 28 40 76 67
$Ben$English
[1] 20 36 36 69
$Ben$Science
[1] 54 71 54 75
$Caz
$Caz$Maths
[1] …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 R 中的数据框中选择/过滤每个组中的最新值。例如,我想从以下数据中的每个 Name 组中选择 3 个最近的值(即最接近今天的日期)框架:
Player Date Result
Sam 03/15/2015 1
Sam 03/22/2015 0
Sam 04/04/2015 2
Sam 04/12/2015 1
Sam 04/18/2015 1
Sam 04/26/2015 0
Sam 08/08/2015 3
Steve 02/17/2015 0
Steve 02/21/2015 0
Steve 03/04/2015 4
Steve 03/11/2015 2
Steve 03/15/2015 1
Steve 03/22/2015 0
Steve 04/12/2015 0
Steve 04/18/2015 2
Steve 04/26/2015 1
Steve 04/29/2015 2
Steve 08/16/2015 4
Jasper 03/15/2015 3
Jasper 03/22/2015 3.5
Jasper 04/04/2015 4
Jasper 04/12/2015 4
Jasper 04/18/2015 5
Jasper …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个矩阵中所有可能的行组合。一个类似于rowSums()函数但不产生nrow()和的函数,它将产生nrow() ^ nrow()和。
例如:
set.seed(10)
dummymat <- matrix(floor(runif(9, 0, 2)), nrow = 3, ncol = 3)
Run Code Online (Sandbox Code Playgroud)
产生矩阵:
[,1] [,2] [,3]
[1,] 1 1 0
[2,] 0 0 0
[3,] 0 0 1
Run Code Online (Sandbox Code Playgroud)
为了找到矩阵的每个可能的行总和,可以编写以下效率很低的代码:
allrowsums <- c()
for(i in 1:nrow(dummymat)) {
firstcolval <- dummymat[i,1]
for(j in 1:nrow(dummymat)) {
secondcolval <- dummymat[j,2]
for(k in 1:nrow(dummymat)) {
thirdcolval <- dummymat[k,3]
rowsum <- firstcolval + secondcolval + thirdcolval
allrowsums <- append(allrowsums,rowsum)
}
}
}
Run Code Online (Sandbox Code Playgroud)
给出以下输出:
[1] 2 2 …Run Code Online (Sandbox Code Playgroud)