В кадре данных:Запись в файл и присвоение имени связанному вектору в R

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. Но почему приведенная выше функция write() выдает эту ошибку.Есть ли способ это исправить?

    Ошибка в cat(list(...), file, sep, fill, labels, add):Аргумент 1 (тип «список») не может быть обработан по вызовам «кошка»:write -> Chece Chiscution остановилась

  2. Названия для Bend Vector в кадре данных добавляются как «Errprob» для всех 10 новых столбцов.Есть ли способ назвать их «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. Я полагаю, что вы ищете функцию write.table.

  2. Используйте функцию colnames

Другие советы

  1. Вы можете использовать write.table() вместо write() для использования с аргументами, указанными выше.Последний подходит для печати матриц (но может потребовать указания ncol или транспонирования входной матрицы), но первый более общий, и я использую его как для матриц, так и для кадров данных.

  2. Вы можете заменить

    err_prob <- pnorm(dat$V4,mean=meanl, sd=stdevl)

    список проблем <- cbind(список проблем,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