2

だから私はそれを学ぶためにRで これらの問題をやろうとしています。

しかし、文字列内の文字の頻度を単純に数えるという最初の問題に固執しています。データのロードと文字列への到達を乗り越えられないようです:-(

このテキストファイルから文字列の最初の文字を印刷するようなことをするにはどうすればよいですか?

これが私がこれまでに試したことです:

> 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
4

4 に答える 4

2

これまでに行ったことは問題ありません。

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-09T15:32:38.470 に答える
2

リンク内のファイルを/tmp/string.txtこのファイルにコピーしました。このファイルには次の1行しかありません。

AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC

readLines次のコマンドを使用してファイルを読み取ることができます。

s = readLines("/tmp/string.txt")

変数sは単一の文字列です。ベースを分割するには、次を使用します。

strsplit(s, "")

次に、以下を使用して表にしtableます。

table(strsplit(s, ""))
于 2012-11-09T16:03:38.870 に答える
1

ファイル全体の最初の文字を表示したい場合は、次のように動作します。

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)
于 2012-11-09T15:24:39.557 に答える
0

readLineとsubstrコマンドを使用して問題を解決できますが、データフレームの最初の文字をgrepするように要求する場合は、単純に、それを使用 substr(dataframe$colname,1,1) して文字列ベクトルを返すことができます。

于 2021-03-03T14:54:09.073 に答える