【发布时间】:2021-02-08 14:23:46
【问题描述】:
我对 R 相当陌生,所以我仍然有一些基本问题。我正在处理一个包含 8760 个小标题的小标题列表。每个 tibble 有 5 行 420 列的数据。我要做的是更改每个小标题的特定行的前 40 个值。如何选择小标题内的变量?
所以我想从逻辑上讲它会像下面这样。我知道语法是错误的。它只是为了让您了解这个想法:
data.list["data"] %>%
data["pn"](0:40) = 0]
如果有人能指出我正确的方向,我会很高兴。
我现在尝试了这个:
daten_pn <- readr::read_rds("./data/testdaten.rds") (8760 obs of 2 variables)
daten = daten_pn["data"] (selecting the first variable aka the tibbles)
set <- function(x) { x = x*0 return(x) }
test = purrr::map(daten[["pn"]], set)
为了将它们全部设置为零。但我得到的是一个空列表。
这是一个类似的例子:
a = list(
mtcars %>% as_tibble() %>% select(-vs),
mtcars %>% as_tibble() %>% sample_n(17)
)
> a
[[1]]
# A tibble: 32 x 10
mpg cyl disp hp drat wt qsec am gear carb
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 21 6 160 110 3.9 2.62 16.5 1 4 4
2 21 6 160 110 3.9 2.88 17.0 1 4 4
3 22.8 4 108 93 3.85 2.32 18.6 1 4 1
4 21.4 6 258 110 3.08 3.22 19.4 0 3 1
5 18.7 8 360 175 3.15 3.44 17.0 0 3 2
6 18.1 6 225 105 2.76 3.46 20.2 0 3 1
7 14.3 8 360 245 3.21 3.57 15.8 0 3 4
8 24.4 4 147. 62 3.69 3.19 20 0 4 2
9 22.8 4 141. 95 3.92 3.15 22.9 0 4 2
10 19.2 6 168. 123 3.92 3.44 18.3 0 4 4
# ... with 22 more rows
[[2]]
# A tibble: 17 x 11
mpg cyl disp hp drat wt qsec vs am gear carb
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 17.8 6 168. 123 3.92 3.44 18.9 1 0 4 4
2 15.2 8 304 150 3.15 3.44 17.3 0 0 3 2
3 15.5 8 318 150 2.76 3.52 16.9 0 0 3 2
4 21 6 160 110 3.9 2.88 17.0 0 1 4 4
5 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2
6 30.4 4 95.1 113 3.77 1.51 16.9 1 1 5 2
7 26 4 120. 91 4.43 2.14 16.7 0 1 5 2
8 24.4 4 147. 62 3.69 3.19 20 1 0 4 2
9 27.3 4 79 66 4.08 1.94 18.9 1 1 4 1
10 15 8 301 335 3.54 3.57 14.6 0 1 5 8
11 10.4 8 460 215 3 5.42 17.8 0 0 3 4
12 17.3 8 276. 180 3.07 3.73 17.6 0 0 3 3
13 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1
14 16.4 8 276. 180 3.07 4.07 17.4 0 0 3 3
15 30.4 4 75.7 52 4.93 1.62 18.5 1 1 4 2
16 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2
17 21.5 4 120. 97 3.7 2.46 20.0 1 0 3 1
现在我想更改小标题内一列的值。就像“在两个小标题中将 cyl 的前 5 个值设置为 0”。
最好的祝福
【问题讨论】:
-
您可以使用
purrr::map遍历列表,但考虑将数据放入一个大标题中——通常更容易处理 -
我不喜欢接触结构,因为稍后会将数据插入到更多函数中。我用我的地图方法编辑了我的帖子,也许你看到我的错误?
-
请包括一个可重现的例子,可能是一个小的人工数据集
-
我试图重现一个类似的问题并编辑了我的帖子。