Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >向paste0中的数据框添加新列

向paste0中的数据框添加新列
EN

Stack Overflow用户
提问于 2018-07-25 16:56:46
回答 1查看 889关注 0票数 0

Rfor循环中,我创建了不同的数据帧并对它们执行了一些操作。我需要的最后一个操作是用前三列的平均值将额外的一列附加到数据帧中。

我的(示例)代码是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for(comparison in c("A_N_vs_T", "A_N_vs_B", "A_N_vs_BT", "A_N_vs_Nprobes",
                    "B_N_vs_T","B_N_vs_B","B_N_vs_BT","B_N_vs_Nprobes")){
 DO SOME OPERATIONS
 assign(paste0("Norm_counts_",comparison,"$N_mean"), rowMeans(eval(parse(text=paste0("Norm_counts_",comparison)))[,c(1,2,3)],na.rm = T))
} 

但是,它不会创建新的列N_mean,而是创建一个新变量,例如名为Norm_counts_A_N_vs_T$N_mean的变量,它在其中存储平均值。

是否可以更改paste0的此行为

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-25 17:17:23

首先,获取要对其进行操作的data.frames的字符向量:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# either specify it yourself
df_names <- c("df_one", "df_two")

# or get all data.frames in the global environment
temp <- x=sapply(ls(), function(x) is.data.frame(get(x)))
df_names <- names(temp)[temp==TRUE]

其次,编写一个函数来执行您想要的操作。

这个特定的函数以字符串形式接受data.frame的名称,并返回data.frame (作为对象)和名为" rowmeans“的新列,该列包含前3列的行均值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
add_rowmeans <- function(df_as_str) {
    # get the obj the str refers to
    df <- eval(as.name(df_as_str))
    # add a column with rowmeans of cols 1-3
    df$rowmeans <- rowMeans(df[,1:3])
    # return df with new column as output
    return(df)
}

最后,循环遍历您的data.frame名称,对每个名称应用该函数,并使用assign保存结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for(i in seq_along(df_names)) {
    this_df_name <- df_names[i]
    assign(this_df_name, add_rowmeans(this_df_name))
}

我在这两个data.frames上进行了测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set.seed(1234)
df1 <- as.data.frame(matrix(sample(1:9, 30, T), nrow=10))
df2 <- as.data.frame(matrix(sample(1:9, 30, T), nrow=10))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51524152

复制
相关文章

相似问题

向数据框列表添加新列

112

向数据框中的新列添加值

29

使用GroupBy向数据框添加新列

19

如何根据列值向数据框中添加新列?

13

基于其他列数据向状态数据框添加新列

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文