如何解决小标题中的行替换
考虑以下R代码小段:
A = tibble(animal = 'cat',color = 'black',weight = 1000)
A[1,] <- gsub("a","e",A[1,])
我想要的是带有条目'cet','bleck'和1000的单行tibble,但是尝试在加载了tibble 3.0.3的情况下运行它会出现错误:
Error: Assigned data `gsub("a",])` must be compatible with row subscript `1`.
x 1 row must be assigned.
x Assigned data has 3 rows.
ℹ Row updates require a list value. Do you need `list()` or `as.list()`?*
...我想这是有道理的,因为gsub会产生一个长度为3的字符向量。
这是我的问题:这段代码只是我在公司服务器上运行的R Shiny应用程序的一小部分。昨天,管理员在服务器上安装了“ photobiology”软件包后,我们的应用开始崩溃;深入研究代码,发现上面的几行是问题的原因。因此,在安装一些新软件包之前,上面的代码已按照我们的预期执行,在安装新软件包(带有依赖项)之后,我们遇到了错误。重写代码不是什么大问题,但是我想了解出了什么问题,并且对小技巧也不太熟悉。可以在tibble软件包的早期版本中使用这种行替换,但在最新版本中不能吗?
解决方法
当您更新小标题行时,它希望您通过
- 列表或数据框/标题
- 它们的列名应与原始小标题(
A
)相同 - 它们应该与原始小标题(
A
)具有相同的类
这是为了确保保持数据一致性并且不会更新错误的值。
将所有这些组合在一起,您可以做到:
tmp <- as.data.frame(t(gsub("a","e",A[1,])))
tmp <- type.convert(tmp,as.is = TRUE)
names(tmp) <- names(A)
A[1,] <- tmp
A
# A tibble: 1 x 3
# animal color weight
# <chr> <chr> <dbl>
#1 cet bleck 1000
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。