从循环函数中提取值以添加到列中
Extract value from a loop function to add in columns
我想 运行 我的每一列的 NLSstAsymptotic 函数(示例数据中的 X1:X3 sheet,我的真实数据 sheet 有更多的列和行).
ID<-c(1,2,3,4,5,6,7,8,9,10,11,12,13)
X1<-c(0,1,2,4,5,5,6,7,8,9,10,10,11)
X2<-c(0,1,2,3,4,5,6,7,8,8,9,10,10)
X3<-c(0,1,2,3,4,4,5,6,7,8,9,10,11)
df<-data.frame(ID,X1,X2,X3)
df_new <- sortedXyData(expression(ID), expression(X1), data=df)
NLSstAsymptotic(df_new)
所需的结果应采用以下形式:
b1
-1.31
-1.41
-0.84
我该怎么做?
我们可以在 tidyverse
中执行此操作,方法是使用 map
遍历列名,根据列名应用函数,select
所需的列
library(dplyr)
library(purrr)
map_dfr(names(df)[2:4],
~NLSstAsymptotic(sortedXyData(ID, .x, data = df))) %>%
select(b1)
# A tibble: 3 x 1
# b1
# <dbl>
#1 2.45e 1
#2 2.23e 1
#3 5.06e12
或者在 base R
中使用 lapply
遍历列
do.call(rbind, lapply(df[-1], function(x)
NLSstAsymptotic(sortedXyData(expression(ID), expression(col),
data = cbind(df['ID'], col = x)))[2]))
考虑在 NLSstAsymptotic
和 sapply
的 x 列名称中构建一个值矩阵:
asym_matrix <- sapply(names(df)[-1], function(x_col)
NLSstAsymptotic(sortedXyData(ID, x_col, data=df)))
asym_matrix
# X1 X2 X3
# b0 -1.311894 -1.418423 -8.461552e-01
# b1 24.513630 22.280853 5.063632e+12
# lrc -2.929047 -2.856312 -2.936952e+01
t(asym_matrix) # TRANSPOSED VERSION
data.frame(t(asym_matrix)) # DATA FRAME VERSION
# b0 b1 lrc
# X1 -1.3118945 2.451363e+01 -2.929047
# X2 -1.4184228 2.228085e+01 -2.856312
# X3 -0.8461552 5.063632e+12 -29.369516
我想 运行 我的每一列的 NLSstAsymptotic 函数(示例数据中的 X1:X3 sheet,我的真实数据 sheet 有更多的列和行).
ID<-c(1,2,3,4,5,6,7,8,9,10,11,12,13)
X1<-c(0,1,2,4,5,5,6,7,8,9,10,10,11)
X2<-c(0,1,2,3,4,5,6,7,8,8,9,10,10)
X3<-c(0,1,2,3,4,4,5,6,7,8,9,10,11)
df<-data.frame(ID,X1,X2,X3)
df_new <- sortedXyData(expression(ID), expression(X1), data=df)
NLSstAsymptotic(df_new)
所需的结果应采用以下形式:
b1
-1.31
-1.41
-0.84
我该怎么做?
我们可以在 tidyverse
中执行此操作,方法是使用 map
遍历列名,根据列名应用函数,select
所需的列
library(dplyr)
library(purrr)
map_dfr(names(df)[2:4],
~NLSstAsymptotic(sortedXyData(ID, .x, data = df))) %>%
select(b1)
# A tibble: 3 x 1
# b1
# <dbl>
#1 2.45e 1
#2 2.23e 1
#3 5.06e12
或者在 base R
中使用 lapply
遍历列
do.call(rbind, lapply(df[-1], function(x)
NLSstAsymptotic(sortedXyData(expression(ID), expression(col),
data = cbind(df['ID'], col = x)))[2]))
考虑在 NLSstAsymptotic
和 sapply
的 x 列名称中构建一个值矩阵:
asym_matrix <- sapply(names(df)[-1], function(x_col)
NLSstAsymptotic(sortedXyData(ID, x_col, data=df)))
asym_matrix
# X1 X2 X3
# b0 -1.311894 -1.418423 -8.461552e-01
# b1 24.513630 22.280853 5.063632e+12
# lrc -2.929047 -2.856312 -2.936952e+01
t(asym_matrix) # TRANSPOSED VERSION
data.frame(t(asym_matrix)) # DATA FRAME VERSION
# b0 b1 lrc
# X1 -1.3118945 2.451363e+01 -2.929047
# X2 -1.4184228 2.228085e+01 -2.856312
# X3 -0.8461552 5.063632e+12 -29.369516