如何在R中创建函数?
而不是逐个编写命令,例如:如何在R中创建函数?,r,function,R,Function,而不是逐个编写命令,例如: data_101$new_column <- "a101" data_102$new_column <- "a102" data_103$new_column <- "a103" data_104$new_column <- "a104" data_105$new_column <- "a105" ... data_150$new_column <- "a150" data\u 101$new\u列您可以使用ls获取对象,
data_101$new_column <- "a101"
data_102$new_column <- "a102"
data_103$new_column <- "a103"
data_104$new_column <- "a104"
data_105$new_column <- "a105"
...
data_150$new_column <- "a150"
data\u 101$new\u列您可以使用ls
获取对象,然后使用mget
获取列表中的数据。我们可以使用Map
在每个数据帧中添加一个新列
d_names <- ls(pattern = 'data_\\d+')
total_data <- Map(cbind, mget(d_names),
new_column = paste0("a", gsub("\\D", "", d_names)))
使用可再现的示例:
data_101 <- data.frame(a = 1:5, b = 11:15)
data_102 <- data.frame(a = 6:10, b = 16:20)
d_names <- ls(pattern = 'data_\\d+')
Map(cbind, mget(d_names), new_column = paste0("a", gsub("\\D", "", d_names)))
#$data_101
# a b new_column
#1 1 11 a101
#2 2 12 a101
#3 3 13 a101
#4 4 14 a101
#5 5 15 a101
#$data_102
# a b new_column
#1 6 16 a102
#2 7 17 a102
#3 8 18 a102
#4 9 19 a102
#5 10 20 a102
data\u 101您可以使用ls
获取对象,然后使用mget
获取列表中的数据。我们可以使用Map
在每个数据帧中添加一个新列
d_names <- ls(pattern = 'data_\\d+')
total_data <- Map(cbind, mget(d_names),
new_column = paste0("a", gsub("\\D", "", d_names)))
使用可再现的示例:
data_101 <- data.frame(a = 1:5, b = 11:15)
data_102 <- data.frame(a = 6:10, b = 16:20)
d_names <- ls(pattern = 'data_\\d+')
Map(cbind, mget(d_names), new_column = paste0("a", gsub("\\D", "", d_names)))
#$data_101
# a b new_column
#1 1 11 a101
#2 2 12 a101
#3 3 13 a101
#4 4 14 a101
#5 5 15 a101
#$data_102
# a b new_column
#1 6 16 a102
#2 7 17 a102
#3 8 18 a102
#4 9 19 a102
#5 10 20 a102
data\u 101您可以将数据帧存储在列表中,这样您就可以像以下那样运行for循环:
data <- list()
for (i in c(105,106,...,150)){
data[[i]]$new_column <- paste0("a",i)
}
data您可以将数据帧存储在列表中,这样您就可以像以下那样运行for循环:
data <- list()
for (i in c(105,106,...,150)){
data[[i]]$new_column <- paste0("a",i)
}
data Hi@Ronak Shah,在我执行您建议的命令后,为什么它在mapply中显示错误(FUN=f,…,SIMPLIFY=FALSE):零长度输入不能与非零长度输入混合?有什么我错过的吗?非常多appreciated@Tzun这很奇怪,对于我创建的一个小示例来说似乎很好。数据帧的名称是否与示例中的名称相同?你能粘贴什么是d_names
的输出吗?Hi@Ronak Shah,在我执行你建议的命令后,为什么它在mapply中显示错误(FUN=f,…,SIMPLIFY=FALSE):零长度输入不能与非零长度输入混合?有什么我错过的吗?非常多appreciated@Tzun这很奇怪,对于我创建的一个小示例来说似乎很好。数据帧的名称是否与示例中的名称相同?能否粘贴d_name
的输出内容?