على إطار البيانات: الكتابة إلى ملف وتسمية المتجه المرتفع في ص

StackOverflow https://stackoverflow.com/questions/1377248

  •  21-09-2019
  •  | 
  •  

سؤال

لدي بيانات تبدو هذه. والرمز الخاص بي أدناه ببساطة حساب بعض القيمة ويربط متجه الإخراج بإطارات البيانات الأصلية.

options(width=200)

args<-commandArgs(trailingOnly=FALSE)
dat <- read.table("http://dpaste.com/89376/plain/",fill=T);

problist <- c();

for (lmer in 1:10) {
   meanl <- lmer;
   stdevl <- (0.17*sqrt(lmer));
   err_prob <- pnorm(dat$V4,mean=meanl, sd=stdevl);
   problist <- cbind(problist,err_prob);
}

dat <- cbind(dat,problist)
#print(dat,row.names=F, column.names=F,justify=left)

# Why this breaks?
write(dat, file="output.txt", sep="\t",append=F);

لدي سؤالان حول ما ورد أعلاه:

  1. ولكن لماذا تعطي وظيفة "الكتابة ()" أعلاه هذا الخطأ. هل هناك طريقة لإصلاحه؟

    خطأ في CAT (قائمة (...) ، ملف ، SEP ، تعبئة ، تسميات ، إلحاق): لا يمكن معالجة الوسيطة 1 (اكتب "قائمة") عن طريق مكالمات "Cat": كتابة -> تنفيذ Cat تم إيقافها

  2. تتم إضافة أسماء المتجه المشوش في إطار البيانات كـ "Errprob" لجميع الأعمدة العشرة الجديدة. هل هناك طريقة لتسميةهم مثل "errprob1" ، "errprob2" ، إلخ؟

هل كانت مفيدة؟

المحلول

أولاً ، لا حاجة إلى نصف الكولون ، يعرف R أن نهاية الخط هي استراحة.


for (lmer in 1:10){
    meanl <- lmer
    stdevl <- (0.17*sqrt(lmer))
    err_prob <- pnorm(dat$V4,mean=meanl, sd=stdevl)
    problist <- cbind(problist,err_prob)
}
colnames(problist)<-paste("errorprob",1:10,sep="")
dat <- cbind(dat,problist)
write.table(dat, file="output.txt", sep="\t",append=F)

  1. أعتقد أنك تبحث عن وظيفة الكتابة

  2. استخدم وظيفة Colnames

نصائح أخرى

  1. يمكنك استخدام الكتابة. هذا الأخير مناسب لطباعة المصفوفات (ولكنه قد يتطلب تحديد NCOL أو نقل مصفوفة الإدخال) ولكن الأول أكثر عمومية وأنا أستخدمه في كل من المصفوفات وإطارات البيانات.

  2. يمكنك استبدال

    err_prob <- pnorm (dat $ v4 ، mean = meanl ، sd = stdevl)

    problist <- cbind (problist ، err_prob)

مع

assign(sprintf("err_prob%d",lmer),pnorm(dat$V4,mean=meanl, sd=stdevl))
problist <- eval(parse(text=sprintf("cbind(problist,err_prob%d)", lmer)))

الخط الأخير يوسع سلسلة الأحرف كتعبير ثم يقيمها. يمكنك ذلك بدلاً من ذلك

colnames(problist) <- sprintf("err_prob%d",1:10)

خلفي

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top