Прошу прощения, если это простой вопрос. Я пытаюсь использовать точки из пакета MixSim в R, чтобы действовать как точки выборки в старой программе Fortran, потому что мне нравится, как MixSim создает точки выборки лучше, но я использую программу Fortran для имитации данных растительности на многих уровнях бета-разнообразие, альфа-разнообразие и т.д.Как форматировать вывод с помощью write.table
я произвожу мои данные в MixSim по:
d=MixSim(BarOmega=0.000,MaxOmega=0.000,K=4,p=3,ecc=0.99,int=c(10,90),PiLow=0.1)
m=simdataset(n=10,Pi=d$Pi,Mu=d$Mu,S=d$S)
И если я использую write.table, это то, что я получаю
write.table(m$X,file="example.txt",quote=F,row.names=F)
V1 V2 V3
87.540626647788 62.8444539443256 17.0026406651813
83.9939847940881 65.0069747775257 18.8676229149976
84.4477456535804 63.6892673685408 18.6384437248469
84.7684968694547 65.4610993744652 17.6252989584773
13.4600970937604 16.9988156469822 49.6810813619893
23.9952555783055 18.6598302958281 48.4204641715953
17.0523647853253 11.518037157788 43.0417655739052
57.5107395863171 40.4872578216636 24.938188234695
11.8320140526743 52.9077915021041 34.5723480775864
12.8754032313702 53.1795899126135 34.1309377040482
Но я мне нужно, чтобы мой результат выглядел точно так же, как для Fo rtran, чтобы принять его.
***** SAMPLING PATTERN FILE
50 3 1 0.0000
50
87.54 62.84 17.00
83.99 65.00 18.86
84.44 63.68 18.63
84.76 65.46 17.62
13.46 16.99 49.68
23.99 18.65 48.42
17.05 11.51 43.04
57.51 40.48 24.93
11.83 52.90 34.57
12.87 53.17 34.13
Я должен отметить, что я точно знаю, как сделать округление в г по:
m=round(m$X,digits=2)
моя лучшая ставка будет просто использовать write.table, а затем форматирование «вручную» , Большинство моих моделей будут созданы в цикле, который я написал в Fortran. Мне нужно будет создать, возможно, несколько десятков моделей в MixSim, а затем отформатировать их, если это так. Все модели будут иметь значительно более 10 баллов.
вы можете получить довольно близко с 'ДФ <- signif (ДФ, 4); write.table (df, 'df.txt', sep = '\ t', row.names = FALSE, quote = FALSE) ', но нет заголовков, и по какой-то причине они, похоже, теряют конечные нули. Наверняка кто-то написал специфическую для Fortran функцию записи по строкам 'read.fortran', но я не уверен, что это такое. – alistaire
Я думаю, вы можете просто применить 'round' ко всему data.frame. 'write.table' может иметь' sep = "\ t" 'Говорить, что это должно выглядеть так" не так полезно. Что такое те элементы «50 3 1 0.0000 \ n 50», ... и должна ли быть первая строка, которая у вас есть в формате кода? Будьте настолько конкретны, насколько сможете. –
@ 42, да все это должно быть там. 50 - номер выборки, 3 - количество групп, 1 - количество измерений (в этом примере), а 0.000 - это местозаполнитель для случайного числа сгенерированного числа. 'write.table', кажется, усекает мои десятичные знаки и не устанавливает каждый элемент в 4 пространства друг от друга, как это необходимо. – NDD