Error in `mutate()`: ℹ In argument: `row_mean = rowMeans(select(., -gene_name))`. ℹ In group 1: `gene_name = "A1BG"`. Caused by error in `h()`: ! 在为'rowMeans'函数选择方法时评估'x'参数出了错: object '.' not found Run `rlang::last_trace()` to see where the error occurred.
时间: 2024-02-13 09:06:25 浏览: 31
这个错误提示表明在执行代码时出现了错误,其中`mutate()`函数的错误信息为“在为'rowMeans'函数选择方法时评估'x'参数出了错: object '.' not found”。
这个错误通常是因为在使用`select()`函数时没有正确指定数据来源。`select()`函数用于选择数据框中的列,它的第一个参数应该是数据框本身,而这里的代码中使用了`.`作为数据源,但是在`mutate()`函数中`.data`参数默认为`.`,因此在`select()`函数中不需要指定数据源,可以直接使用变量名来选择列。因此,正确的代码应该是:
```
d %>%
group_by(gene_name) %>%
mutate(row_mean = rowMeans(select(., -gene_name))) %>%
slice(which.max(row_mean)) %>%
ungroup() %>%
select(-row_mean)
```
如果你还是遇到同样的错误,请尝试运行`rlang::last_trace()`以查看更详细的错误信息,并检查`select()`函数的参数是否正确。
相关问题
d %>% + group_by(gene_name) %>% + mutate(row_mean = rowMeans(select(., -gene_name)), .groups = "drop") %>% + slice(which.max(row_mean)) %>% + select(-row_mean) Adding missing grouping variables: `gene_name`
这段代码中,使用了`+`符号来将多行代码连接在一起,不过在每行代码结尾处都加上了`+`符号,应该去掉这些多余的符号。
另外,出现“Adding missing grouping variables: `gene_name`”警告信息的原因是,在`mutate()`函数中没有明确指定`gene_name`列作为分组变量。需要将`mutate()`函数中的`select(., -gene_name)`改为`select(., -gene_name) %>% ungroup()`,以去除分组信息并确保`rowMeans()`函数对整个数据框进行计算。修改后的代码如下:
```
d %>%
group_by(gene_name) %>%
mutate(row_mean = rowMeans(select(., -gene_name) %>% ungroup()), .groups = "drop") %>%
slice(which.max(row_mean)) %>%
select(-row_mean)
```
这样就可以避免警告信息的出现,并正确地对每个分组进行计算。
d %>% group_by(gene_name) %>% mutate(row_mean = rowMeans(select(., -gene_name))) %>% slice(which.max(row_mean)) %>% ungroup() %>% select(-row_mean)能不用管道操作符分布进行吗
是的,可以不用管道操作符将这段代码分步实现。下面是一种可能的分步实现方法:
```
# 按照 gene_name 列进行分组
grouped_data <- group_by(d, gene_name)
# 计算每行除 gene_name 列外的均值
data_with_mean <- mutate(grouped_data, row_mean = rowMeans(select(., -gene_name)))
# 选择 row_mean 列中的最大值所在的行
max_row_data <- slice(data_with_mean, which.max(data_with_mean$row_mean))
# 取消分组操作
ungrouped_data <- ungroup(max_row_data)
# 从最终的数据框中删除 row_mean 列
final_data <- select(ungrouped_data, -row_mean)
```
这种方法并没有使用管道操作符,而是将每个步骤的结果存储在一个新的变量中,然后将这个变量作为下一个步骤的输入。虽然这种方法可能看起来比较冗长,但它可以使每个步骤的目的和实现更加清晰。