r - 如何使用列的名称读取或为 tibble 中的单个单元格分配值?
问题描述
我正在学习tidyverse
并遇到了最简单操作的问题:读取单个单元格并将值分配给单个单元格。我需要通过匹配另一列中的特定值并调用我想要更改其值的列的名称来做到这一点(所以我不能使用数字行号和列号)。
我已经在网上和 SO 上搜索并阅读了 tibble 文档(这似乎是最适用的https://tibble.tidyverse.org/reference/subsetting.html?q=cell)并且没有找到答案。(我可能遗漏了一些东西 - 为这个问题的简单性道歉,如果它在其他地方得到了回答)
test<-tibble(x = 1:5, y = 1, z = x ^ 2 + y)
产量:
A tibble: 5 x 3
x y z
<int> <dbl> <dbl>
1 1 1 2
2 2 1 5
3 3 1 10
4 4 1 17
5 5 1 26
test["x"==3,"z"]
产量:
A tibble: 0 x 1
… with 1 variable: z <dbl>
但没有告诉我那个细胞的价值。
当我尝试分配一个值时......
test["x"==3,"z"]<-20
...这没用。
test[3,3]
这可行,但如上所述,我需要通过名称而不是数字来调用单元格。
这样做的正确方法是什么?
解决方案
它不是数据表。如果我们使用方法,则使用orbase R
提取列“x”test$x
test[["x"]]
test[test$x == 3, "z"]
# A tibble: 1 x 1
# z
# <dbl>
#1 10
或使用subset
subset(test, x == 3, select = 'z')
或与dplyr
library(dplyr)
test %>%
filter(x == 3) %>%
select(z)
或者如果我们想传递一个字符串作为列名,转换为sym
bol 并计算
test %>%
filter(!! rlang::sym("x") == 3) %>%
select(z)
或与data.table
library(data.table)
as.data.table(test)[x == 3, .(z)]
# z
#1: 10
推荐阅读
- excel - 使用任务计划程序从 PowerShell 创建电子邮件(运行时错误 429)
- reactjs - 如何测试 Firebase signInWithEmailAndPassword?
- kubernetes - 为 k8s 外部服务预留静态 IP 地址
- hyperledger-fabric - 获取配置块时的警告消息
- android - 如何在 Android 的 MVVM 架构中使用 BroadcastReceiver?
- typescript - 传递给 IE 11 特定 deactivate 事件的侦听器的事件有什么类型?
- ruby-on-rails - 为什么我的 Cloudinary 视频出现“找不到资源”错误?
- java - SQL 语句在工具中工作,但在使用 JDBC 的 Java 中不工作
- angular - 从Angular中的数组获取数据拼接
- asp.net-core - 包 Microsoft.AspNetCore.Authentication.Cookies 2.1.2 与 netcoreapp2.1 (.NETCoreApp,Version=v2.1) 不兼容。包裹