嗨,我正在使用R将数据帧保存到DB2 SQL表中。我似乎能够创建表框架,但无法将数据追加到表中-
>df <- read.csv("dat.csv")
Run Code Online (Sandbox Code Playgroud)
其中dat.csv是没有标题的csv,只有两列中的原始数据
然后我创建表:
>sqlQuery(channel, "create table sqltable
(
col1 int,
col2 float
)"
(
Run Code Online (Sandbox Code Playgroud)
我可以通过选择数据库上的空表“ sqltable”来确认表已创建
所以现在我需要通过执行以下操作将“ dat.csv”中的数据添加到“ sqltable”中:
>sqlSave(channel, df, "sqltable", verbose=T, fast=T, append=T)
no: 1 rownames 1/***/no: 2 col1 31105/***/no: 3 col2 0.001/***/
no: 2 rownames 1/***/no: 2 col1 31106/***/no: 3 col2 0.023/***/
no: 3 rownames 1/***/no: 2 col1 31107/***/no: 3 col2 1.456/***/
no: 4 rownames 1/***/no: 2 col1 31108/***/no: 3 col2 0.001/***/
no: 5 rownames 1/***/no: 2 col1 31109/***/no: 3 col2 2.102/***/
Run Code Online (Sandbox Code Playgroud)
一切都很好,直到我这样做: …
考虑以下示例:
data(iris)
pairs(iris[1:4],xlim=c(0,8), ylim = c(0,8))
Run Code Online (Sandbox Code Playgroud)
如您所见,所有子面板的轴限制已更改。
但是,所需的更改是每个子面板行/列的规格xlim
和ylim
单独设置。
我细读了SO,找不到合适的答案。
有一个非常耗时的操作,它在我的包中生成一个数据集.我想保存这个数据集,只有当我手动删除缓存的文件时才让包重建它.这是我的方法作为包的一部分:
myDataset = Module[{fname, data},
fname = "cached-data.mx";
If[FileExistsQ[fname],
Get[fname],
data = Evaluate[timeConsumingOperation[]];
Put[data, fname];
data]
];
timeConsumingOperation[]:=Module[{},
(* lot of work here *)
{"data"}
];
Run Code Online (Sandbox Code Playgroud)
但是,不是将长数据集写入文件,Put命令只写一行:"timeConsumingOperation []",即使我用上面的Evaluate包装它也是如此.(确实,这种行为不一致,有时会写入数据集,有时不会.)
你如何缓存你的数据?
由于长度是一种通用方法,为什么我不能这样做
length.character <- nchar
Run Code Online (Sandbox Code Playgroud)
?似乎字符串在R中被特殊处理.这是有原因的吗?你会不鼓励定义head.character和tail.character等函数吗?
是不是Mathematica的Minimize
函数不允许像Mod [x,2] == 0这样的约束?我正在尝试使用Mathematica 解决MinuteMath难题:
四个不同的正整数的最小可能平均值是多少?
我的"解决方案"看起来像这样:
vars = Subscript[x, #] & /@ Range[4];
cond = Apply[And, Mod[#, 2] == 0 & /@ vars] &&
(0 < Subscript[x, 1]) &&
Apply[And, Table[Subscript[x, i] < Subscript[x, i + 1], {i, 1, 3}]];
Minimize[{Mean[vars], cond}, vars, Integers]
Run Code Online (Sandbox Code Playgroud)
但Minimize
回报未评估.附加问题:我可以EvenQ
用来定义约束吗?问题是,未定义表达式的EvenQ[x]
返回.False
x
假设我有一个数据框,其中包含整个列NA
,如下所示:
set.seed(0)
data <- data.frame(A = rnorm(10, 10, 1),
B = rnorm(10, 12, 2),
C = rep(NA, 10))
Run Code Online (Sandbox Code Playgroud)
如果我min()
在列中应用,我会得到我希望的输出:
apply(data, 2, min)
# A B C
# 8.460050 9.524923 NA
Run Code Online (Sandbox Code Playgroud)
但是,当我申请时which.min()
,我的输出是一个列表,列C
给出integer(0)
:
apply(data, 2, which.min)
# $A
# [1] 6
# $B
# [1] 10
# $C
# integer(0)
Run Code Online (Sandbox Code Playgroud)
我可以通过这个相当丑陋的解决方法让它看起来像我想要的方式:
which.mins <- unlist(apply(data, 2, which.min))
which.mins[names(data)[!(names(data) %in% names(which.mins))]] <- NA
which.mins
# A B C
# 6 10 NA
Run Code Online (Sandbox Code Playgroud)
有没有更好的方式来做到这一点,那会模仿我使用时得到的输出apply() …
我在fasta文件中设置了EST序列.在这里,如何基于序列ID或名称进行子集化?
>gi|296783888|gb|GW992815.1|GW992815 UAS-Mi10 Complementary DNA of mulberry (Morus indica) Morus indica cDNA 5' similar to Putative phosphoribosyltransferase/phosphoribosylanthranilate-like gene from Morus indica, mRNA sequence
GCAGCCGTCGGATCGTGAGCGTGATCGCGTGGCTAGTCGGGTTGGCGAAATGGTTGGATGATATCCGGAG
GTGGAGGAACCCCATTACCACGGTATTGGTCCACATCTTATATTTAGTGCTTGTTTGGTACCCGGATTTG
ATTGTCCCAACCGGGTTTTTATATGTGTTCCTAATCGGTGTATGGTACTATCGGTTTCGGCCCAAGATAC
CAGCGGGTATGGATACCCGACTCTCACAAGCTGAAGCGGTTGACCCGGATGAGCTTGATGAGGAATTCGA
CACCATACCGAGCTCAAAACCACCCGACATAATCAGGGTCCGGTATGACCGGTTGCGGATATTGGCAGCC
CGGGTTCAAACGGTTTTGGGTGATTTTGCAACACAAGGGGAGCGGGTTCAGGCCTTGGTTAGCTGGAGGG
ACCCAAGGGCCACAAAATTGTTCATAGGCGTGTGCTTGGCCATAACAATAATTCTCTATGTGGTGCCACC
CAAAATGGTTGCCGTGGCACTTGGATTCTACTATTTACGACACCCCATGTTCCGAGACCCCATGCCTCCT
GCAAGCTTGAATTTCTTCAGAAGGCTTCCAAGCCTTTCAGACCGCTTTAATGTAGATTAGAATATTATAT
GATTATTAGTAGGCCCAA
>gi|296783887|gb|GW992814.1|GW992814 UAS-Mi9 Complementary DNA of mulberry (Morus indica) Morus indica cDNA 5' similar to Dehydration-responsive protein RD22, Similar to BURP domain-containing protein like gene from Morus indica, mRNA sequence
AAGCAGTGGTCTAGAACCAGAGTGGCCCCTGCGATGCAGGTATCATCTCTATTATCAAAAGGGATAAGGG
GTGGATCCGTCGGGGATTTGAGTCTCACATGGTCGCTGATAACTTATTGAATGGATATTGGATTGTGTGC
AGTGCGACCTAAACAGGATTGCCGTTGGGGCCTGTGGTCAGAGATACCCCACACTTCTCAACTCCCAAAT
TGGATCTTGTTCCTTGTTTTCCTGTATTAAGCCTGACCCCTGAGGCTTTCGCCACTGCCAACTGGGTGCC
GCCTGCTGACTTCTGATTCCCCGTGCTAACGGTTACTCCCGATTCCTTATCCACATCGAAGATGAACTAT
TGACTTCCGCAAACTCAAAAGGCTGCAAGATATCACTGACCGCTGTCGGGATCCGCGATCGGCATATACG
CGAAATCCGATCCCGGATCCCGGGACTGCAGACGGCTGAA
Run Code Online (Sandbox Code Playgroud)
比如使用标题行>gi|296783888|gb|GW992815.1|GW992815 UAS-Mi10 Complementary DNA of mulberry (Morus indica) Morus indica …
像大多数物理问题一样,我的情况受到边界的影响,因此我想根据截断的高斯分布生成(带有R)随机数.
这个想法是这些数字的平均值不应该取决于边界.我已经找到了包truncnorm,但它不能完成这项工作:
例如,这里是高斯平均值为0.1和宽度为0.1,但约束在0和1之间的情况:
install.packages("truncnorm")
library(truncnorm)
vec=rtruncnorm(n=100000,a=0,b=1,mean=0.1,sd=0.1)
hist(vec,breaks=100)
mean(vec)
[1] 0.1289061
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,最终均值不是作为输入给出的,我可以通过使用标准rnorm函数并对结果进行子设置得到相同的结果.
我不想重新发明轮子,所以欢迎任何进一步包装的想法或建议!谢谢!