【发布时间】:2021-06-04 05:45:52
【问题描述】:
我正在处理一个大型数据集下载数据集,最终目标是连接许多数据帧。
在过去一周左右的时间里,由于“标记”与“字符”数据类型不兼容,我一直无法加入数据框。最终,我想将我的函数映射到列表中多个数据框中的同一个变量。
每个 df 的结构如下(编辑以更改变量/属性名称,因为我无法共享数据)。我在这里使用的感兴趣的变量是“CODE”:
structure(list(VAR1 = structure(c(val, val, val, val, val, val), .Label = c("a",
"b", "c", "d"), class = "factor"), ID = c(1,
2, 3, 4, 5, 6), CODE = structure(c("c1", "c1",
"c1", "c1", "c1", "c1"), label = "instance code", units = "-4", class = c("labelled",
"character")), ...
我对 R/RStudio 还是比较陌生,所以我想了一会儿,我的问题是在整个列表中进行映射,但是当我选择一个元素来删除标签时,它仍然不起作用。尽管事实上当我使用 get_label 时,标签会显示出来(下面的函数),但几乎就像 R 不知道标签在那里一样。
get_label(my.list[["my.df"]][["my.variable"]]
我尝试了以下方法(我将其显示为使用单个变量而不是整个列表,这就是我过去几天一直在尝试的方式):
- 类函数。有趣的是,当我回电时,它说课程是性格;但是,当我查看数据框时,该类仍然显示“字符 [# of elements] (S3: labelled, character)”
class(my.list[["my.df"]][["my.variable"]] <- "character"
- remove_label 函数
remove_label(my.list[["my.df"]][["my.variable"]]
- 非类函数。这一次适用于一个变量,但没有映射到整个列表,因此我将我的映射代码包括在内,以防在这种情况下出现问题。
## for one variable
unclass(my.list[["my.df"]][["my.variable"]])
## for entire list
my.list %>%
map_at("my.variable", ~ unclass)
## I also tried map in case it was a map_at issue--still didn't work.
- zap_label
zap_label(my.list[["my.df"]][["my.variable"]])
- 将属性设置为空
attr(my.list[["my.df"]][["my.variable"]], "label") <- NULL
- as.character
as.character(my.list[["my.df"]][["my.variable"]])
有人有什么想法吗?这可能是 R 中的一个错误,还是只是我对 R 显示的相对缺乏经验?
我还尝试修改这些函数,以防我误解了标签并且它是值标签而不是导致问题的变量标签。不是!
感谢您的帮助!
【问题讨论】:
-
嗨 sidneyb!我认为帮助您的最简单方法是显示一些数据。将
dput(head(my.df))添加到您的问题中。 -
无论如何.. 你试过
as.character吗? -
嘿@Edo!我添加了该信息。我试过 as.character,但也没有用。以防万一,重试了下,还是不行。更新了帖子以反映这一点。
-
@sydneyb 你不应该缩短 dput 的输出,否则它将变得无用。阅读我们的how-to-make-a-great-r-reproducible-example