سؤال

لدي ملف به العديد من الصفوف من هذا النوع

2010-01-12 19:40   1021.00000   0.00001     1.00
2010-01-12 19:50   1031.00000   0.00000     -1.00

من أجل قراءتها كحديقة حديقة الحيوان التي أستخدمها

tmp <- read.table("myfile")
GOEMD <- zoo(tmp[,3], as.chron(paste(tmp[,1],tmp[,2]), format="%Y-%m-%d %H:%M"))

يعمل بشكل صحيح ولكن أود استخدامه read.zoo() في حين أن.

لقد حاولت

f <- function(x)  as.chron(paste(tmp[,1],tmp[,2]))
tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN  = f)

وحتى تحديد

colClasses= c("character","character","numeric","numeric","numeric")

لكنه لا يعمل ؛ يقول: السطر 136 (الخط الذي لصقه أعلاه) ليس لديه 14 عنصرًا.

لقد حاولت أيضًا:

tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN  = as.chron)
هل كانت مفيدة؟

المحلول

  1. خطأ مطبعي f تم الإشارة بالفعل.
  2. أيضا هناك بعض الميزات read.zoo التي قد ترغب في الاستفادة منها. أولاً ، لاحظ أنه إذا كانت قيمة index الوسيطة عبارة FUN. لاحظ أيضًا أن أ FUN2 الحجة متوفرة التي يتم تطبيقها على إخراج FUN لذلك يمكننا كتابتها بطريقة مضغوطة مثل هذا:

وهكذا جرب هذا:

library(zoo)
library(chron)

Lines <- "2010-01-12 19:40   1021.00000   0.00001     1.00
2010-01-12 19:50   1031.00000   0.00000     -1.00"

z <- read.zoo(textConnection(Lines), index = list(1, 2), 
        FUN = paste, FUN2 = as.chron)

تم كتابة ما سبق ليكون محتوى ذاتيًا حتى تتمكن من نسخه حرفيًا إلى الحافظة ثم لصقه في جلسة R الخاصة بك. لاستخدامه مع استبدال ملفك textConnection(Lines) مع "myfile".

نصائح أخرى

وظيفتك f يجب أن تبحث عن tmp. ربما كنت تنوي:

f <- function(x)  as.chron(paste(x[,1],x[,2]))
tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN = f)

أيضًا ، تبدو البيانات التي قمت بنشرها وكأنها محددة في علامة التبويب ، وليست مساحة ، لذلك قد تحتاج إلى ذلك بدلاً من ذلك:

tmp <- read.zoo("myfile", index = 1, sep="\t", FUN = as.chron)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top