1

次のようなファイルがあります。

Time,Open,High,Low,Close,Volume
01.02.1995 00:00:00.000,1.57920,1.58400,1.57700,1.58240,0.00
02.02.1995 00:00:00.000,1.58200,1.58620,1.57820,1.58130,0.00
03.02.1995 00:00:00.000,1.58150,1.58280,1.56050,1.56180,0.00
04.02.1995 00:00:00.000,1.56180,1.56180,1.56180,1.56180,0.00

dataframe最初の列が文字であり(日付に変更するのは次のステップです)、残りの列が数値である必要があるため、これを行っています:

myData <- read.table("C:\\Users\\Adam\\Desktop\\GU95.csv", colClasses=c("character",rep("numeric",5)), header=TRUE, sep = ','))

2 番目の列 (Open) のクラスを確認するには、次のようにします。

myData$Open <- apply(myData, 1, function(row) print(class(row[2])))

ただし、出力は「数値」ではなく「文字」です。

私は何を間違えましたか?

4

1 に答える 1

3

applyデータフレームを行列または配列に強制します。参照?apply:

X が配列ではなく、null 以外の dim 値を持つクラスのオブジェクト (データ フレームなど) である場合、それが 2 次元 (たとえば、データフレーム) または as.array 経由。

配列と行列は 1 種類のデータしか保持できず、最初の列に文字が含まれているため、すべてが文字に強制されます。

@Arun がコメントで述べたように、sapply(myData, class)またはを使用して各列のクラスを確認できますstr(myData)

于 2013-03-02T10:55:22.147 に答える