r - 使用 R 更改特定列中的数据
问题描述
我想遍历一个数据框并更改特定列中的数据。我想专门使用 purrr 来做到这一点。
df = data.frame(a = rnorm(4), b = rnorm(4), c = rnorm(4))
print(df)
a b c
1 0.6770575 -0.115178 -0.1521001
2 0.3291719 1.436888 0.1287069
3 -0.2183360 -1.311364 -0.2227273
4 -1.0290438 1.516289 0.8771463
#I want to change every other column. So I create a sequence.
df.seq = seq(1, ncol(df), 2)
print(df.seq)
[1] 1 3
现在我想循环并将指定的列更改为“data1”和“data2”。
这是我的尝试。
change = c("data1", "data2")
map2_dfr(df.seq, change, ~df[,.x] = .y)
我尝试在 map2 中使用一些 dplyr .. 仍然没有运气。我希望结果如下所示。
a b c
1 data1 -1.092680 data2
2 data1 -0.340103 data2
3 data1 1.183388 data2
4 data1 -1.257398 data2
另外,我必须在这里使用一个序列。我的真实数据是每 29 列我必须输入一个字符串。
解决方案
我不知道为什么需要在purrr
基础 R 版本简单易用的情况下专门完成此操作
df[df.seq] <- as.list(change)
df
# a b c
#1 data1 -0.4726404 data2
#2 data1 -1.0560956 data2
#3 data1 -0.6405799 data2
#4 data1 -0.8501395 data2
但是,如果它需要在purrr
几个选项是
df[df.seq] <- purrr::map2(df[df.seq], change, ~replace(., TRUE, .y))
要不就
df[df.seq] <- purrr::map2(df[df.seq], change, ~.y)
这似乎是一种复杂的方式。
推荐阅读
- objective-c - WebRTC:通过 CGDisplayStream (h264/vp8/vp9) 进行屏幕共享的编码性能不佳
- html - 使用 CSS :not() 定位元素中的选定内容
- docker - WSL:无法在 WSL 2、Ubuntu 18.04 上安装 docker
- python - 尝试使用 Python 创建 Google 快讯时电子邮件或密码不正确
- git - 如何将克隆的 git 存储库 zip 文件添加到 Azure devops?
- c++ - 如何在 C++ 中删除新数组?
- javascript - 在从后端填充数据的 SELECT 上添加额外的选项标签——不起作用
- python - 使用 Python 客户端访问 WebDAV 时出现 HTTP 401 错误
- android - 来自 JetpackNavigation 库中通知的隐式深层链接
- android - 如何允许访问需要身份验证 uid、firebase 数据库规则的字段中的特定字段