假设我有一个数据框列表,列表中的每个数据框都有相同的结构:
def multilayer_perceptron(x, weights, biases, beta_weights):
layer_1 = tf.add(tf.matmul(x, weights["h1"]), biases["b1"])
#layer_1 = tf.nn.relu(layer_1) # Old
layer_1 = custom_sigmoid(x, beta_weights["beta1"]) # New
out_layer = tf.add(tf.matmul(layer_1, weights["out"]), biases["out"])
return out_layer
等等。我想创建(在这种情况下)由每个$ final的行创建的6个新数据帧。这意味着第一个数据帧应该包含每个数据帧的所有第一行,如下所示:
$final01_1
k h value
85 12 h=12 0.02867449
86 11 h=23 0.02885711
87 10 h=15 0.02868290
88 9 h=14 0.02872784
89 8 h=13 0.02864886
90 7 h=19 0.02869149
. . .. .....
$final02_1
k h value
85 12 h=12 0.02013402
86 11 h=17 0.02012700
87 10 h=17 0.01972729
88 9 h=26 0.02025178
89 8 h=13 0.02035556
90 7 h=13 0.02022585
$final03_1
k h value
85 12 h=55 0.04254915
86 11 h=56 0.04283464
87 10 h=24 0.04244404
88 9 h=22 0.04239187
89 8 h=21 0.04318766
90 7 h=21 0.04510606
这适用于所有行。 我认为lapply的东西是解决方案,但我没有得到有效的解决方案。
希望,你可以帮助我
答案 0 :(得分:2)
我们可以遍历rownames,然后提取行
lst2 <- lapply(rownames(lst[[1]]), function(rn)
do.call(rbind, lapply(lst, function(y) y[rn,])))
注意:data.frame
不能具有相同的行名称,因此重复的行名称将变为具有make.unique
的唯一行名称
这也可以使用split
完成。使用list
循环遍历map_df
,使用(rownames_to_column
)创建行名称列并获取单个数据集,然后通过“rn”列获取split
以便我们获取list
data.frame
个library(tidyverse)
lst %>%
map_df(rownames_to_column, 'rn') %>%
split(.$rn)
具有相同的'rn'
#$`85`
# rn k h value
#1 85 12 h=12 0.02867449
#7 85 12 h=12 0.02013402
#13 85 12 h=55 0.04254915
#$`86`
# rn k h value
#2 86 11 h=23 0.02885711
#8 86 11 h=17 0.02012700
#14 86 11 h=56 0.04283464
#$`87`
# rn k h value
#3 87 10 h=15 0.02868290
#9 87 10 h=17 0.01972729
#15 87 10 h=24 0.04244404
#$`88`
# rn k h value
#4 88 9 h=14 0.02872784
#10 88 9 h=26 0.02025178
#16 88 9 h=22 0.04239187
#$`89`
# rn k h value
#5 89 8 h=13 0.02864886
#11 89 8 h=13 0.02035556
#17 89 8 h=21 0.04318766
#$`90`
# rn k h value
#6 90 7 h=19 0.02869149
#12 90 7 h=13 0.02022585
#18 90 7 h=21 0.04510606
-output
public currentUser = this.currentUserSubject
.asObservable()
.filter(Boolean)
.distinctUntilChanged();
如上所述,最好有唯一的行名。因此,我们将'rn'留作列