<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>이경수 선생님의 수학실험실</title>
    <link>https://optimizer0528.tistory.com/</link>
    <description>1. Geogebra, Algeomath 등의 수학교육용 소프트웨어를 사용하여 교실현장에서 유익하게 사용할 수 있는 교수학습용 자료를 제작하여 공유하고, 적절한 피드백을 받고자 합니다. 
2. Python, Java, R 등의 프로그래밍 언어를 이용하여 수학문제를 해결하는 과정과 논리를 생각해 보고자 합니다.</description>
    <language>ko</language>
    <pubDate>Mon, 17 Aug 2026 17:33:07 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>(이경수)</managingEditor>
    <image>
      <title>이경수 선생님의 수학실험실</title>
      <url>https://tistory1.daumcdn.net/tistory/2656267/attach/f0e23efa77b74bc891ebcb20db865e5c</url>
      <link>https://optimizer0528.tistory.com</link>
    </image>
    <item>
      <title>R Text mining</title>
      <link>https://optimizer0528.tistory.com/160</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;문서에서 단어를 추출하는 함수를 정의한 것이다. 먼저 words에 벡터 형식으로 단어들이 채워지고, 이들은 다시 wlist라는 list의 이름이 된다. 그리고 문서 내, 같은 단어의 모든 위치가 해당 이름 아래 축적된다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618973325977&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; findwords &amp;lt;- function(doc){
+     words &amp;lt;- scan(doc,&quot;&quot;)
+     wlist &amp;lt;- list()
+     for(i in 1:length(words)){
+         wlist[[words[i]]] &amp;lt;- c(wlist[[words[i]]],i)
+     }
+     return(wlist)
+ }
&amp;gt; txt &amp;lt;- findwords(&quot;Apple.txt&quot;)
Read 706 items
&amp;gt; txt
$Apple
 [1]   1  63  66 143 145 147 149 157 163 165 168 170 189 210 223 245 259 309 324 340 385 410 434 452 525 542 560 585 615
[30] 651 678

$Inc.
[1]   2 453

$is
[1]   3  26 543 561 575 637 669

$an
[1]   4 313 499

$American
[1] 5

$multinational
[1] 6

$technology
[1]   7  38 547

$company
[1]   8 448 513 548 592 659

$headquartered
[1] 9
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음 odrlist 함수는 위 findwords 함수로 얻은 wlist를 빈도수에 따라 오름차순으로 재배열하는 함수이다. 여기서 sapply는 list의 각 요소마다 함수를 적용시킬 수 있는 함수로써 벡터 형식의 결과물을 만들어 낸다. wlist에서 각 요소의 길이를 재고 있는데, 이것은 곧 각 단어의 빈도수를 구하는 것이라 할 수 있다. order 함수는 데이터를 오름차순으로 배열했을 때, 각 데이터의 본래 index를 반환하는 함수이다. 이를 통해 wlist의 단어들을 빈도수에 따라 재배열하는 것이 가능함을 알 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>R</category>
      <author>(이경수)</author>
      <guid isPermaLink="true">https://optimizer0528.tistory.com/160</guid>
      <comments>https://optimizer0528.tistory.com/160#entry160comment</comments>
      <pubDate>Wed, 21 Apr 2021 13:58:32 +0900</pubDate>
    </item>
    <item>
      <title>R List indexing</title>
      <link>https://optimizer0528.tistory.com/159</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래 예시에서 x는 a, b라는 이름의 벡터로 구성된 리스트이다. a는 숫자형(numeric), b는 문자형(character) 데이터이다.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;list의 각 요소에 접근하여 데이터를 수정하거나 삭제해야 한다면 [ ]를 두 번 겹쳐서 x[[1]],&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;x[[2]]&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;와 같이 나타내면 된다. 더 세부적으로&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;리스트의 첫번째 인자에서 k번째&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;데이터의 접근은 x[&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;]][k]와 같이 나타내면 된다.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618970421887&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; x &amp;lt;- list(a=c(1,2,3), b=c(&quot;y&quot;,&quot;n&quot;,&quot;y&quot;))
&amp;gt; x
$a
[1] 1 2 3

$b
[1] &quot;y&quot; &quot;n&quot; &quot;y&quot;

&amp;gt; x[[1]] &amp;lt;- c(4,5,6)
&amp;gt; x
$a
[1] 4 5 6

$b
[1] &quot;y&quot; &quot;n&quot; &quot;y&quot;

&amp;gt; x[[1]][2:3] &amp;lt;- c(7,8)
&amp;gt; x
$a
[1] 4 7 8

$b
[1] &quot;y&quot; &quot;n&quot; &quot;y&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;마찬가지로 list에서&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2번째 요소의 2번째 데이터는 x[[2]][2]와 같이 접근하면 되겠다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618970471752&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; x[[2]][2] &amp;lt;- &quot;y&quot;
&amp;gt; x
$a
[1] 4 7 8

$b
[1] &quot;y&quot; &quot;y&quot; &quot;y&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터에 접근하는 또다른 방법은 '$'를 이용하는 것이다. x$a는 x[[1]]와 같은 의미이다.(list x의 첫번째 요소의 이름이 a이다.)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618970518663&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; x$a &amp;lt;- c(11,12,13)
&amp;gt; x
$a
[1] 11 12 13

$b
[1] &quot;y&quot; &quot;y&quot; &quot;y&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그러면 x[1]과 x[[1]]은 어떤 차이를 갖는 것일까?&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618970556726&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; x[1]
$a
[1] 11 12 13

&amp;gt; x[[1]]
[1] 11 12 13&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;datatype을 확인해 보니, x[[1]]는 numeric, x[1]는 list이다. '&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;x[1] &amp;lt;- c(4,5,6)'는 list에 numeric형 자료를 넣는 표현으로 경고 메시지가 뜨게 만든다.&amp;nbsp;괄호를 하나만 쓰고자 할 때는&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;x[1] &amp;lt;- list(c(1,2,3)) 와 같이 표현하는 것이 맞겠다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618970739270&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; class(x[[1]])
[1] &quot;numeric&quot;
&amp;gt; class(x[1])
[1] &quot;list&quot;
&amp;gt; x[[1]] &amp;lt;- c(1,2,3)
&amp;gt; x
$a
[1] 1 2 3

$b
[1] &quot;y&quot; &quot;y&quot; &quot;y&quot;

&amp;gt; x[1] &amp;lt;- c(4,5,6)
경고메시지(들): 
In x[1] &amp;lt;- c(4, 5, 6) :
  number of items to replace is not a multiple of replacement length
&amp;gt; x[1] &amp;lt;- list(c(1,2,3))
&amp;gt; x
$a
[1] 1 2 3

$b
[1] &quot;y&quot; &quot;y&quot; &quot;y&quot;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>R</category>
      <author>(이경수)</author>
      <guid isPermaLink="true">https://optimizer0528.tistory.com/159</guid>
      <comments>https://optimizer0528.tistory.com/159#entry159comment</comments>
      <pubDate>Wed, 21 Apr 2021 11:05:52 +0900</pubDate>
    </item>
    <item>
      <title>R function_example3</title>
      <link>https://optimizer0528.tistory.com/158</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음은 문서에 사용된 단어와 그 단어가 쓰이는 위치를 모두 검색하는 함수에 대한 소개입니다. 문서자료&lt;span style=&quot;color: #000000;&quot;&gt; 'poisson.txt'는 wikipedia에서 포아송 분포를 검색했을 때의 내용을 사용하였습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;캡처.PNG&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;291&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mgATA/btq23t0us7p/m6y0aOjL9lCiDungEKtSJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mgATA/btq23t0us7p/m6y0aOjL9lCiDungEKtSJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mgATA/btq23t0us7p/m6y0aOjL9lCiDungEKtSJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmgATA%2Fbtq23t0us7p%2Fm6y0aOjL9lCiDungEKtSJK%2Fimg.png&quot; data-filename=&quot;캡처.PNG&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;291&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;scan( )로 txt file의 내용을 읽어 보면, 다음과 같이 출력됩니다. (절대경로 또는 상대경로)&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618907080022&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; txt &amp;lt;- scan(&quot;C:/Users/user/Desktop/poisson.txt&quot;,&quot;&quot;)
Read 188 items
&amp;gt; txt
  [1] &quot;In&quot;                               &quot;probability&quot;                     
  [3] &quot;theory&quot;                           &quot;and&quot;                             
  [5] &quot;statistics,&quot;                      &quot;the&quot;                             
  [7] &quot;Poisson&quot;                          &quot;distribution&quot;                    
  [9] &quot;(/&amp;lt;cb&amp;gt;늩w&amp;lt;c9&amp;gt;뫫릗&amp;lt;c9&amp;gt;뭤/;&quot;        &quot;French&quot;                          
 [11] &quot;pronunciation:&quot;                   &quot;&amp;lt;e2&amp;gt;\u0080&amp;lt;8b&amp;gt;[pwas&amp;lt;c9&amp;gt;붛&amp;lt;83&amp;gt;]),&quot;
 [13] &quot;named&quot;                            &quot;after&quot;                           
 [15] &quot;French&quot;                           &quot;mathematician&quot;                   
 [17] &quot;Sim챕on&quot;                          &quot;Denis&quot;                           
 [19] &quot;Poisson,&quot;                         &quot;is&quot;                              
 [21] &quot;a&quot;                                &quot;discrete&quot;                        
 [23] &quot;probability&quot;                      &quot;distribution&quot;                    
 [25] &quot;that&quot;                             &quot;expresses&quot;                       
 [27] &quot;the&quot;                              &quot;probability&quot;                     
 [29] &quot;of&quot;                               &quot;a&quot;                               
 [31] &quot;given&quot;                            &quot;number&quot;                          
 [33] &quot;of&quot;                               &quot;events&quot;                          
 [35] &quot;occurring&quot;                        &quot;in&quot;                              
 [37] &quot;a&quot;                                &quot;fixed&quot;                           
 [39] &quot;interval&quot;                         &quot;of&quot;                              
 [41] &quot;time&quot;                             &quot;or&quot;                              
 [43] &quot;space&quot;                            &quot;if&quot;                     &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;findwords() 함수를 정의하여 wlist에 각 단어의 순서가 담겨있는 벡터를 저장합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618907318105&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; findwords &amp;lt;- function(x){
+     txt &amp;lt;- scan(x, &quot;&quot;)
+     wlist &amp;lt;- list()
+     for(i in 1:length(txt)){
+         word &amp;lt;- txt[i]
+         wlist[[word]] &amp;lt;- c(wlist[[word]], i)
+     }
+     return(wlist)
+ }
&amp;gt; findwords(&quot;poisson.txt&quot;)
Read 188 items
$In
[1] 1

$probability
[1]   2  23  28 112 131 153 165

$theory
[1] 3

$and
[1]   4  54 139 143 148 161

$`statistics,`
[1] 5

$the
[1]   6  27  57  60  71 111 115 133 173

$Poisson
[1]   7  64 130&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>R</category>
      <author>(이경수)</author>
      <guid isPermaLink="true">https://optimizer0528.tistory.com/158</guid>
      <comments>https://optimizer0528.tistory.com/158#entry158comment</comments>
      <pubDate>Tue, 20 Apr 2021 17:29:21 +0900</pubDate>
    </item>
    <item>
      <title>R function_example2</title>
      <link>https://optimizer0528.tistory.com/157</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이웃한 세 항들로 이루어진 점화식을 R function으로 나타낸 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618903048295&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; g &amp;lt;- function(n){
+     if(n==1){
+         return(1)
+     }
+     else if(n==2) {
+         return(2)
+     }
+     else {
+         return( 5*f(n-1)-6*f(n-2) )
+     }
+ }
&amp;gt; g(1)
[1] 1
&amp;gt; g(2)
[1] 2
&amp;gt; g(3)
[1] -5
&amp;gt; g(4)
[1] -0.9058824
&amp;gt; g(5)
[1] -0.2586016&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;특성방정식의 해를 이용하면, 점화식의 형태를 등비수열의 점화식 꼴로 변형할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;Recurrence_relation2.jpg&quot; data-origin-width=&quot;423&quot; data-origin-height=&quot;762&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pca4y/btq255EFPd4/Tn3oZ3le4UIZAMBNAEsYG0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pca4y/btq255EFPd4/Tn3oZ3le4UIZAMBNAEsYG0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pca4y/btq255EFPd4/Tn3oZ3le4UIZAMBNAEsYG0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpca4y%2Fbtq255EFPd4%2FTn3oZ3le4UIZAMBNAEsYG0%2Fimg.jpg&quot; data-filename=&quot;Recurrence_relation2.jpg&quot; data-origin-width=&quot;423&quot; data-origin-height=&quot;762&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;또한, 특성방정식이 서로 다른 실근을 갖는다면, 형태가 같은 두 종류의 등식을 얻을 수 있다. 이 두 등식을 연립하는 방법으로도 점화식을 해결할 수 있다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>R</category>
      <author>(이경수)</author>
      <guid isPermaLink="true">https://optimizer0528.tistory.com/157</guid>
      <comments>https://optimizer0528.tistory.com/157#entry157comment</comments>
      <pubDate>Tue, 20 Apr 2021 16:18:36 +0900</pubDate>
    </item>
    <item>
      <title>R function_example1</title>
      <link>https://optimizer0528.tistory.com/156</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음은 고등학교 2학년 수학, 점화식 단원에서 쉽게 볼 수 있는 문제이다. 이 문제는 아래 solution과 같이 점화식의 양변을 모두 역수로 하여 치환하면 기본점화식 형태가 되므로, 어렵지 않게 해법을 발견할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;Recurrence_relation1.jpg&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;640&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5MKGu/btq26DHEIWO/mhA3Qa2o8IfmtiK7LBrrz0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5MKGu/btq26DHEIWO/mhA3Qa2o8IfmtiK7LBrrz0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5MKGu/btq26DHEIWO/mhA3Qa2o8IfmtiK7LBrrz0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5MKGu%2Fbtq26DHEIWO%2FmhA3Qa2o8IfmtiK7LBrrz0%2Fimg.jpg&quot; data-filename=&quot;Recurrence_relation1.jpg&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;640&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위에 제시한 수열의 점화식을 R의 함수로 나타내 보았다. return()을 통해 결과 값을 반환하고 있다. C에서와 비슷한 모양이다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618902805453&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; f &amp;lt;- function(n){
+     if(n==1){
+         return(1)
+     } else {
+         return( f(n-1)/(2*f(n-1)+3) )
+     }
+ }
&amp;gt; f(1)
[1] 1
&amp;gt; f(2)
[1] 0.2
&amp;gt; f(3)
[1] 0.05882353&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>R</category>
      <author>(이경수)</author>
      <guid isPermaLink="true">https://optimizer0528.tistory.com/156</guid>
      <comments>https://optimizer0528.tistory.com/156#entry156comment</comments>
      <pubDate>Tue, 20 Apr 2021 16:13:48 +0900</pubDate>
    </item>
    <item>
      <title>R의 데이터 타입_배열(array)</title>
      <link>https://optimizer0528.tistory.com/155</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;array는 다차원의 행렬로 생각할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618902275123&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; array(1:12, dim=c(2,3))
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
&amp;gt; array(1:12, dim=c(2,3,2))
, , 1

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

, , 2

     [,1] [,2] [,3]
[1,]    7    9   11
[2,]    8   10   12&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음은 4차원의 array를 정의한 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618902318997&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; array(1:24, dim=c(2,3,2,2))
, , 1, 1

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

, , 2, 1

     [,1] [,2] [,3]
[1,]    7    9   11
[2,]    8   10   12

, , 1, 2

     [,1] [,2] [,3]
[1,]   13   15   17
[2,]   14   16   18

, , 2, 2

     [,1] [,2] [,3]
[1,]   19   21   23
[2,]   20   22   24&lt;/code&gt;&lt;/pre&gt;</description>
      <category>R</category>
      <author>(이경수)</author>
      <guid isPermaLink="true">https://optimizer0528.tistory.com/155</guid>
      <comments>https://optimizer0528.tistory.com/155#entry155comment</comments>
      <pubDate>Tue, 20 Apr 2021 16:06:02 +0900</pubDate>
    </item>
    <item>
      <title>Matrix operation</title>
      <link>https://optimizer0528.tistory.com/154</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;행렬의 성분은 1열이 모두 채워지면, 2열 그리고 2열이 모두 채워지면 3열의 순서로 채워진다. 그러나 만일, byrow=T라는 인자를 추가하면 채우는 기준을 열에서 행으로 바꿀 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618902042162&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; matrix(1:6, nrow=3)
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6
&amp;gt; matrix(1:6, nrow=3, byrow=T)
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;행렬곱은 %*%이다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618902101790&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; x &amp;lt;- matrix(1:6, nrow=3)
&amp;gt; y &amp;lt;- matrix(1:4, nrow=2)
&amp;gt; x %*% y
     [,1] [,2]
[1,]    9   19
[2,]   12   26
[3,]   15   33&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;solve(y) : 행렬 y의 역행렬을 구한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618902134374&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; y
     [,1] [,2]
[1,]    1    3
[2,]    2    4
&amp;gt; solve(y)
     [,1] [,2]
[1,]   -2  1.5
[2,]    1 -0.5&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;t( )함수로 본래 행렬의 전치(transpose)행렬을 얻을 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618902166135&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; x
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6
&amp;gt; t(x)
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>R</category>
      <author>(이경수)</author>
      <guid isPermaLink="true">https://optimizer0528.tistory.com/154</guid>
      <comments>https://optimizer0528.tistory.com/154#entry154comment</comments>
      <pubDate>Tue, 20 Apr 2021 16:03:03 +0900</pubDate>
    </item>
    <item>
      <title>Vectors (seq, rep)</title>
      <link>https://optimizer0528.tistory.com/153</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;연속된 정수로 이루어진 벡터는 start&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;end 와 같은 형식으로 정의한다. 만일 공차 d인 수열을 만들고자 한다면 아래 예와 같이 seq(from, to, d) 와 같은 형식으로 정의를 해 주면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618901580053&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; x &amp;lt;- 1:10
&amp;gt; x
 [1]  1  2  3  4  5  6  7  8  9 10
&amp;gt; x &amp;lt;- seq(1, 10)
&amp;gt; x
 [1]  1  2  3  4  5  6  7  8  9 10
&amp;gt; x &amp;lt;- seq(1, 10, 2)
&amp;gt; x
[1] 1 3 5 7 9
&amp;gt; x &amp;lt;- seq(1, 10, 3)
&amp;gt; x
[1]  1  4  7 10&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;seq_along()은 인자로 들어오는 데이터의 수(n)에 따라 1:n 인 벡터를 만들며, seq_len(n)는 1:n 인 벡터를 만들어 낸다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618901681197&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; seq_along(c(&quot;k&quot;, &quot;o&quot;, &quot;r&quot;, &quot;e&quot;, &quot;a&quot;))
[1] 1 2 3 4 5
&amp;gt; seq_len(3)
[1] 1 2 3&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;rep()는 동일한 데이터 패턴을 반복적으로 갖는 벡터를 만들어 낸다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618901743760&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; rep(c(&quot;a&quot;, &quot;b&quot;), 3)
[1] &quot;a&quot; &quot;b&quot; &quot;a&quot; &quot;b&quot; &quot;a&quot; &quot;b&quot;
&amp;gt; rep(c(&quot;a&quot;, &quot;b&quot;), each=3)
[1] &quot;a&quot; &quot;a&quot; &quot;a&quot; &quot;b&quot; &quot;b&quot; &quot;b&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;벡터를 집합으로 취급하여 집합의 연산을 가능하게 하는 함수도 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;- setdiff : 차집합&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;- union : 합집합&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;- intersect : 교집합&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;- setequal : 집합의 상등 판별&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618901926120&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; setdiff(c(&quot;k&quot;, &quot;o&quot;, &quot;r&quot;, &quot;e&quot;, &quot;a&quot;), c(&quot;o&quot;, &quot;r&quot;, &quot;a&quot;, &quot;n&quot;, &quot;g&quot;, &quot;e&quot;))
[1] &quot;k&quot;
&amp;gt; setdiff(c(&quot;o&quot;, &quot;r&quot;, &quot;a&quot;, &quot;n&quot;, &quot;g&quot;, &quot;e&quot;), c(&quot;k&quot;, &quot;o&quot;, &quot;r&quot;, &quot;e&quot;, &quot;a&quot;))
[1] &quot;n&quot; &quot;g&quot;
&amp;gt; union(c(&quot;o&quot;, &quot;r&quot;, &quot;a&quot;, &quot;n&quot;, &quot;g&quot;, &quot;e&quot;), c(&quot;k&quot;, &quot;o&quot;, &quot;r&quot;, &quot;e&quot;, &quot;a&quot;))
[1] &quot;o&quot; &quot;r&quot; &quot;a&quot; &quot;n&quot; &quot;g&quot; &quot;e&quot; &quot;k&quot;
&amp;gt; intersect(c(&quot;o&quot;, &quot;r&quot;, &quot;a&quot;, &quot;n&quot;, &quot;g&quot;, &quot;e&quot;), c(&quot;k&quot;, &quot;o&quot;, &quot;r&quot;, &quot;e&quot;, &quot;a&quot;))
[1] &quot;o&quot; &quot;r&quot; &quot;a&quot; &quot;e&quot;
&amp;gt; setequal(c(&quot;o&quot;, &quot;r&quot;, &quot;a&quot;, &quot;n&quot;, &quot;g&quot;, &quot;e&quot;), c(&quot;k&quot;, &quot;o&quot;, &quot;r&quot;, &quot;e&quot;, &quot;a&quot;))
[1] FALSE&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>R</category>
      <author>(이경수)</author>
      <guid isPermaLink="true">https://optimizer0528.tistory.com/153</guid>
      <comments>https://optimizer0528.tistory.com/153#entry153comment</comments>
      <pubDate>Tue, 20 Apr 2021 15:59:02 +0900</pubDate>
    </item>
    <item>
      <title>Random Sampling</title>
      <link>https://optimizer0528.tistory.com/152</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;sample()은 특정범위의 데이터를 임의로 추출하는 함수이다. 아래와 같이 sample(1:10)은 [1:10]에서 하나의 순열을 만들어 낸다. 이 때, 데이터를 뽑는 횟수를 인자로 추가할 수 있다. sample(1:10, 5)는 [1:10] 범위에서 5개를 뽑아 만든 순열이다. &lt;span style=&quot;color: #000000;&quot;&gt;기본적으로 비복원추출이지만 replace 값을 TRUE로 줌으로써 복원추출을 할 수도 있다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618901320900&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; [1]  9  2  3  1  8 10  6  4  7  5
&amp;gt; sample(1:10, 5)
[1] 7 1 6 9 4
&amp;gt; sample(1:10, replace = TRUE)
 [1] 6 9 8 6 3 9 7 8 6 2
&amp;gt; sample(1:10, replace = TRUE)
 [1] 7 2 3 4 3 1 7 9 1 2&lt;/code&gt;&lt;/pre&gt;</description>
      <category>R</category>
      <author>(이경수)</author>
      <guid isPermaLink="true">https://optimizer0528.tistory.com/152</guid>
      <comments>https://optimizer0528.tistory.com/152#entry152comment</comments>
      <pubDate>Tue, 20 Apr 2021 15:48:50 +0900</pubDate>
    </item>
    <item>
      <title>Random numbers</title>
      <link>https://optimizer0528.tistory.com/151</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;rnorm 함수는 정규분포에서 임의로 변수를 추출하는 함수이다. 함수는 rnorm(n, mean, sd)와 같은 형식으로 호출하며, 여기서&amp;nbsp;첫번째 인자인 n은 관찰의 횟수이다. 그리고 아래 예처럼 mean, sd 값을 인자로 넣지 않고 함수를 호출하면 mean=0, sd=1 인 표준정규분포에서 데이터를 취하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618900914303&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; x &amp;lt;- rnorm(5)
&amp;gt; x
[1]  0.2884969  1.1597383  0.4425697 -0.5722537 -0.6847786
&amp;gt; x &amp;lt;- rnorm(5, 7, 2)
&amp;gt; x
[1] 9.232620 9.475818 9.156295 5.899293 6.680683
&amp;gt; summary(x)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  5.899   6.681   9.156   8.089   9.233   9.476&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;set.seed&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;is the recommended way to specify seeds.&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; rnorm 함수를 호출할 때 마다 임의의 데이터가 추출되지만 set.seed()함수를 호출한 후, rnorm 함수를 호출하면 seed에 해당하는 데이터를 다시 불러 오게 된다.​&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1618901019017&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; set.seed(1)
&amp;gt; rnorm(5)
[1] -0.6264538  0.1836433 -0.8356286  1.5952808  0.3295078
&amp;gt; rnorm(5)
[1] -0.8204684  0.4874291  0.7383247  0.5757814 -0.3053884
&amp;gt; set.seed(1)
&amp;gt; rnorm(5)
[1] -0.6264538  0.1836433 -0.8356286  1.5952808  0.3295078&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1618901080552&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; set.seed(2)
&amp;gt; rnorm(5)
[1] -0.89691455  0.18484918  1.58784533 -1.13037567
[5] -0.08025176
&amp;gt; set.seed(2)
&amp;gt; rnorm(5)
[1] -0.89691455  0.18484918  1.58784533 -1.13037567 -0.08025176
&amp;gt; rnorm(5)
[1]  0.1324203  0.7079547 -0.2396980  1.9844739 -0.1387870
&amp;gt; rnorm(5)
[1]  0.4176508  0.9817528 -0.3926954 -1.0396690  1.7822290
&amp;gt; set.seed(2)
&amp;gt; rnorm(5)
[1] -0.89691455  0.18484918  1.58784533 -1.13037567 -0.08025176&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>R</category>
      <author>(이경수)</author>
      <guid isPermaLink="true">https://optimizer0528.tistory.com/151</guid>
      <comments>https://optimizer0528.tistory.com/151#entry151comment</comments>
      <pubDate>Tue, 20 Apr 2021 15:44:57 +0900</pubDate>
    </item>
  </channel>
</rss>