当前位置: 首页 > 知识库问答 >
问题:

将不同的数字添加到dataframe的不同列

刁冠宇
2023-03-14

以下是我目前的尝试:

library("tidyverse")
library("rlang")
data(mtcars)

mtcars_colnames <- quo(c("mpg", "cyl", "disp"))
num <- c(1, 2, 3)

mtcars %>% mutate(across(!!! mtcars_colnames, function(x) {x + num[col(.)]}))

我一直在思考如何动态地向列(mpg、cyl、disp)添加(1,2,3)。提前谢了。

共有1个答案

奚和光
2023-03-14

我们可以通过只传递字符串向量而不是quo保证和'num'的命名向量来更改输入,然后使用中的cur_column与'num'的命名向量匹配,获得相应的值并进行加法

library(dplyr)
mtcars_colnames <- c("mpg", "cyl", "disp")
num <- setNames(c(1, 2, 3), mtcars_colnames)
mtcars1 <- mtcars %>%
    mutate(across(all_of(mtcars_colnames), ~ num[cur_column()] + .))

-检查输出

# // old data
mtcars %>% 
    select(all_of(mtcars_colnames)) %>% 
    slice_head(n = 5)
#                   mpg cyl disp
#Mazda RX4         21.0   6  160
#Mazda RX4 Wag     21.0   6  160
#Datsun 710        22.8   4  108
#Hornet 4 Drive    21.4   6  258
#Hornet Sportabout 18.7   8  360

# // new data
mtcars1 %>% 
    select(all_of(mtcars_colnames)) %>%
    slice_head(n = 5)
#                   mpg cyl disp
#Mazda RX4         22.0   8  163
#Mazda RX4 Wag     22.0   8  163
#Datsun 710        23.8   6  111
#Hornet 4 Drive    22.4   8  261
#Hornet Sportabout 19.7  10  363

或者,如果我们希望传递一个未命名的'num'向量,那么cur_column将curl_column与across`中的'mtcars_colnames匹配以返回索引,然后使用该索引来子集'num'

mtcars1 <- mtcars %>%
    mutate(across(all_of(mtcars_colnames), 
           ~ num[match(cur_column(), mtcars_colnames)] + .))

 类似资料:
  • 问题内容: 我设置了logstash以使用嵌入式elastisearch。 我可以记录事件。 我的logstashconf看起来是这样的:https://gist.github.com/khebbie/42d72d212cf3727a03a0 现在,我想添加另一个udp输入,并在另一个索引中对该输入进行索引。 有可能吗?我这样做是为了使报告更加容易,因此我可以在一个索引中包含系统日志事件,而在另一

  • 如何将一个流中的对象同时添加到两个不同的列表中 目前我正在做 要将流中的对象添加到linkedlist“resourceMemory”中,我还想同时将相同的对象添加到另一个列表中,但我找不到它的语法。是否可能,或者每个列表需要两份代码副本?

  • 只是所有的估计日期都不一样… 我的问题是,我似乎无法针对特定的实例。我只能选择整个方法(固定费率),我检查了我的方法实例ID,因为它们是唯一的: 但只有当我把作为php开关方法的一个例子时,它才起作用。2,3,4,5,7不工作。 这是我的代码: 代码显然会对我所有的运输方法产生所有相同的估计。 谢谢! 我在用这个: 大小写'flat_rate':$标签。='Lieferzeit: 2-3标签平';

  • 我希望文件记录器以这样的方式配置日志类别'X' 记录器one在信息级别上记录“X”,在调试级别上记录其他东西 记录器在调试级别上有两个日志“x”

  • 为什么在添加相同的数字时输出不同? 输出为: 如果我交换值 我得到的输出为:<代码>15.7000000000001 如何获得相同的输出?

  • 当用户单击时,我想将不同的添加到我的。 面板必须根据用户单击的按钮进行更改。这是我的代码的一部分: 我该怎么解决这个问题?