所以我试着在R中使用these problems来学习它。
但是我坚持使用the first problem来简单地计算字符串中字符的频率。我似乎甚至无法加载数据并访问字符串:-(
我该怎么做,比如打印这个文本文件中字符串的第一个字符?
这是我到目前为止尝试过的:
> rosalind_dna <- read.table("~/Downloads/rosalind_dna.txt", quote="")
Warning message:
In read.table("~/Downloads/rosalind_dna.txt", quote = "") :
incomplete final line found by readTableHeader on '~/Downloads/rosalind_dna.txt'
> viewData(rosalind_dna)
> str(rosalind_dna[1,1,1])
Factor w/ 1 level "GGCCCGGTTACTGCGACTGAACAATCAAAATCTGAAGCATTTAAGCCAAACCAATTGAGATCGACTTACGAGCGATAACCCAGTATATTCAAGTGCTACTGATGAGGCGTGGTCCCCTGGACAAGGC"| __truncated__: 1发布于 2012-11-09 23:32:38
到目前为止,您所做的一切都很好。
read.table返回一个数据帧。在本例中,您只得到一个只有一列且该列中只有一个值的数据框。
默认情况下,R会将数据框中的字符列转换为系数。您可以使用as.character将其转换回来。
然后,您只需将该单个字符串拆分为单个字符(strsplit),然后创建一个表(table)。(不需要循环!)
下面是一个玩具示例,说明了我提到的所有功能:
> dat <- data.frame(V1 = factor("abcdfjtusje"))
> str(dat)
'data.frame': 1 obs. of 1 variable:
$ V1: Factor w/ 1 level "abcdfjtusje": 1
> x <- as.character(dat[1,1])
> x
[1] "abcdfjtusje"
> strsplit(x,"")
[[1]]
[1] "a" "b" "c" "d" "f" "j" "t" "u" "s" "j" "e"
> strsplit(x,"")[[1]]
[1] "a" "b" "c" "d" "f" "j" "t" "u" "s" "j" "e"
> table(strsplit(x,"")[[1]])
a b c d e f j s t u
1 1 1 1 1 1 2 1 1 1
> 发布于 2012-11-10 00:03:39
我已经将链接中的文件复制到了/tmp/string.txt中。这个文件只有一行:
AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC我们可以使用readLines命令读取该文件:
s = readLines("/tmp/string.txt")变量s只是一个单独的字符串。为了拆分基数,我们使用:
strsplit(s, "")然后使用table制作表格
table(strsplit(s, ""))发布于 2012-11-09 23:24:40
如果您想要显示整个文件的第一个字符,您可以执行以下操作:
s = readLines("Your file.txt",n=1)
substr(s, 1, 1)要显示每行的第一个字符,请执行以下操作:
s = readLines("Your file.txt")
substr(s, 1, 1)要显示每行的第n个字符:
n = 5
s = readLines("Your file.txt")
substr(s, n, n)https://stackoverflow.com/questions/13310653
复制相似问题