-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLab03_Tutorial_Path-Directory.html
More file actions
239 lines (208 loc) · 8.26 KB
/
Lab03_Tutorial_Path-Directory.html
File metadata and controls
239 lines (208 loc) · 8.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
<!DOCTYPE html>
<html lang="" xml:lang="">
<head>
<title>Lab03 Tutorial</title>
<meta charset="utf-8" />
<meta name="author" content="曾子軒 Dennis Tseng" />
<script src="libs/header-attrs-2.13/header-attrs.js"></script>
<link href="libs/remark-css-0.0.1/default.css" rel="stylesheet" />
<link href="libs/remark-css-0.0.1/metropolis.css" rel="stylesheet" />
<link href="libs/remark-css-0.0.1/metropolis-fonts.css" rel="stylesheet" />
</head>
<body>
<textarea id="source">
class: center, middle, inverse, title-slide
# Lab03 Tutorial
## Path, Directory, and Rproj
### 曾子軒 Dennis Tseng
### 台大新聞所 NTU Journalism
### 2022/03/17
---
<style type="text/css">
.remark-slide-content {
padding: 1em 1em 1em 1em;
font-size: 28px;
}
.my-one-page-font {
padding: 1em 1em 1em 1em;
font-size: 20px;
/*xaringan::inf_mr()*/
}
</style>
---
class: inverse, center, middle
# [AS01](https://p4css.github.io/R4CSS_TA_1102/AS01_Homework_R-Basic-Intermediate.html)
---
# 路徑和中文編碼
- Path 路徑
- 資料夾的地址
- 我剛剛在`"台大新聞所四樓的 415 研究室裡面的沙發上睡覺"`
- **absolute path 絕對路徑**,以上面的例子來說,因為你們不在 415 教室,所以我會用完整的地址`"台大新聞所四樓的 415 研究室裡面的沙發上"`描述我的位置,這是"絕對"的地址
- **relative path 相對路徑**,以上面的例子來說,如果有同學剛剛也在 415 研究室裡面,我就會跟他說我在`"沙發上"`,因為同學已經在那個空間了,這是"相對"的地址
- 實際例子
- 絕對路徑 `"/Users/dennistseng/R4CSS-TA/data/Lab03/ARG.csv"`
- 相對路徑 `"data/Lab03/ARG.csv"`
---
# 路徑和中文編碼
- 為什麼在乎
- 檔案可能失蹤
- 方便多人協作
- 如何取得路徑:除了堅持老派的手寫溫度
- RStudio 右邊可以找到
- Mac:`右鍵 再按 options` or `option + command + c`
- Windows:`shift 再按 右鍵` or `ctrl + L`
- Windows:直接從 `address bar` or `file explorer` 複製
- reference:[Mac](https://kknews.cc/zh-tw/news/4ze44yq.html) & [Windows](https://www.tenforums.com/tutorials/131557-copy-path-file-explorer-windows-10-a.html)
- 路徑中的斜線與反斜線: Mac copy 得到的路徑用 `/` 間隔,可以直接使用,Windows copy 得到的路徑用 `\` 間隔,不能直接用,要修正成 `/` or `\\`
- `"data/a.csv"` or `"data\\a.csv"` 都可以
---
# Path (路徑) and Directory (目錄)
- Directory, 現在在哪個資料夾
- 舉例來說,我剛剛在的地方是 415 教室
- working directory 代表你的 R 運行時讀檔案的起始位置
- 尋找自己的 directory
- `getwd()`
- `setwd()`
- 缺點是 not self-contained, not portable
- 別人不方便協作、資料夾變動不好恢復、同時有多專案進行時會混亂
---
# R Project (R 專案)
- R project, R 專案
- 使用 R 專案有很多好處,其中之一在於讓你的**環境**保持乾淨
- 環境指的是 environment,A 專案的變數不會跟 B 專案的變數打架,譬如兩邊都有 `df_country` 但內容不同
- 打開 R4CSS_TA 裡面的 R4CSS_TA.Rproj
- 我寫 `read_csv("data/Lab03/ARG.csv")` 上傳 Github,下載後不用改路徑,但若寫 `"Users/子軒/碩一/學校事務/不想寫程式/R語言/R4CSS_TA/data/Lab03/ARG.csv"` 別人就沒辦法用
- working directory 就會是R project 檔案所在的資料夾
---
# R Project (R 專案)
<img src="photo/Lab03_rproj01.jpg" width="45%" height="45%" /><img src="photo/Lab03_rproj02.jpg" width="45%" height="45%" />
---
# R Project (R 專案)
- GOOD
<img src="photo/Lab03_rproj03.jpg" width="100%" height="100%" />
- BAD
<img src="photo/Lab03_rproj04.jpg" width="100%" height="100%" />
---
class: inverse, center, middle
# [AS02](https://p4css.github.io/R4CSS_TA_1102/AS02_Homework_know-your-data.html)
</textarea>
<style data-target="print-only">@media screen {.remark-slide-container{display:block;}.remark-slide-scaler{box-shadow:none;}}</style>
<script src="https://remarkjs.com/downloads/remark-latest.min.js"></script>
<script>var slideshow = remark.create({
"highlightStyle": "github",
"highlightLines": true,
"countIncrementalSlides": false,
"self_contained": true
});
if (window.HTMLWidgets) slideshow.on('afterShowSlide', function (slide) {
window.dispatchEvent(new Event('resize'));
});
(function(d) {
var s = d.createElement("style"), r = d.querySelector(".remark-slide-scaler");
if (!r) return;
s.type = "text/css"; s.innerHTML = "@page {size: " + r.style.width + " " + r.style.height +"; }";
d.head.appendChild(s);
})(document);
(function(d) {
var el = d.getElementsByClassName("remark-slides-area");
if (!el) return;
var slide, slides = slideshow.getSlides(), els = el[0].children;
for (var i = 1; i < slides.length; i++) {
slide = slides[i];
if (slide.properties.continued === "true" || slide.properties.count === "false") {
els[i - 1].className += ' has-continuation';
}
}
var s = d.createElement("style");
s.type = "text/css"; s.innerHTML = "@media print { .has-continuation { display: none; } }";
d.head.appendChild(s);
})(document);
// delete the temporary CSS (for displaying all slides initially) when the user
// starts to view slides
(function() {
var deleted = false;
slideshow.on('beforeShowSlide', function(slide) {
if (deleted) return;
var sheets = document.styleSheets, node;
for (var i = 0; i < sheets.length; i++) {
node = sheets[i].ownerNode;
if (node.dataset["target"] !== "print-only") continue;
node.parentNode.removeChild(node);
}
deleted = true;
});
})();
(function() {
"use strict"
// Replace <script> tags in slides area to make them executable
var scripts = document.querySelectorAll(
'.remark-slides-area .remark-slide-container script'
);
if (!scripts.length) return;
for (var i = 0; i < scripts.length; i++) {
var s = document.createElement('script');
var code = document.createTextNode(scripts[i].textContent);
s.appendChild(code);
var scriptAttrs = scripts[i].attributes;
for (var j = 0; j < scriptAttrs.length; j++) {
s.setAttribute(scriptAttrs[j].name, scriptAttrs[j].value);
}
scripts[i].parentElement.replaceChild(s, scripts[i]);
}
})();
(function() {
var links = document.getElementsByTagName('a');
for (var i = 0; i < links.length; i++) {
if (/^(https?:)?\/\//.test(links[i].getAttribute('href'))) {
links[i].target = '_blank';
}
}
})();
// adds .remark-code-has-line-highlighted class to <pre> parent elements
// of code chunks containing highlighted lines with class .remark-code-line-highlighted
(function(d) {
const hlines = d.querySelectorAll('.remark-code-line-highlighted');
const preParents = [];
const findPreParent = function(line, p = 0) {
if (p > 1) return null; // traverse up no further than grandparent
const el = line.parentElement;
return el.tagName === "PRE" ? el : findPreParent(el, ++p);
};
for (let line of hlines) {
let pre = findPreParent(line);
if (pre && !preParents.includes(pre)) preParents.push(pre);
}
preParents.forEach(p => p.classList.add("remark-code-has-line-highlighted"));
})(document);</script>
<script>
slideshow._releaseMath = function(el) {
var i, text, code, codes = el.getElementsByTagName('code');
for (i = 0; i < codes.length;) {
code = codes[i];
if (code.parentNode.tagName !== 'PRE' && code.childElementCount === 0) {
text = code.textContent;
if (/^\\\((.|\s)+\\\)$/.test(text) || /^\\\[(.|\s)+\\\]$/.test(text) ||
/^\$\$(.|\s)+\$\$$/.test(text) ||
/^\\begin\{([^}]+)\}(.|\s)+\\end\{[^}]+\}$/.test(text)) {
code.outerHTML = code.innerHTML; // remove <code></code>
continue;
}
}
i++;
}
};
slideshow._releaseMath(document);
</script>
<!-- dynamically load mathjax for compatibility with self-contained -->
<script>
(function () {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-MML-AM_CHTML';
if (location.protocol !== 'file:' && /^https?:/.test(script.src))
script.src = script.src.replace(/^https?:/, '');
document.getElementsByTagName('head')[0].appendChild(script);
})();
</script>
</body>
</html>