Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将值与特定列相乘_R_Tidyverse - Fatal编程技术网

R 将值与特定列相乘

R 将值与特定列相乘,r,tidyverse,R,Tidyverse,我想将一个值(0.045)与数据集中的特定列(以“I”开头)相乘。还有一个名为“id”的列,所有行的值都为0.045 我试过这个,但不起作用: df %>% mutate(across(starts_with("i")), ~.id) 要相乘的列可以根据位置或它们都以“i”开头的事实来指定 希望有人能帮助我 非常感谢 马格纳斯试试这个。为了创建示例,我使用了irisdataset。请注意,用于变换列的新定义应该在cross()内部,而不是在它外部,就像您在共享代

我想将一个值(0.045)与数据集中的特定列(以“I”开头)相乘。还有一个名为“id”的列,所有行的值都为0.045

我试过这个,但不起作用:

df %>% 
  mutate(across(starts_with("i")), ~.id)
要相乘的列可以根据位置或它们都以“i”开头的事实来指定

希望有人能帮助我

非常感谢


马格纳斯试试这个。为了创建示例,我使用了
iris
dataset。请注意,用于变换列的新定义应该在
cross()
内部,而不是在它外部,就像您在共享代码中所做的那样。以下是解决方案:

library(tidyverse)
#Code
iris %>% 
  mutate(across(starts_with("Sepal"), ~.*0.045))
cols_bool <- startsWith(names(iris), "Sepal")
cbind(iris[,!cols_bool, drop = FALSE], iris[,cols_bool, drop = FALSE] * 0.045)
输出(某些行):

基本R解决方案:

library(tidyverse)
#Code
iris %>% 
  mutate(across(starts_with("Sepal"), ~.*0.045))
cols_bool <- startsWith(names(iris), "Sepal")
cbind(iris[,!cols_bool, drop = FALSE], iris[,cols_bool, drop = FALSE] * 0.045)

cols\u bool您会丢失一个
*
符号。此外,公式部分应该是
cross()
的参数,而不是
mutate()
的参数。你把它放错地方了。尝试
df%>%mutate(跨越(以“i”开头,~.*id))