[英]Retain column names after split in r
我有一個如下的數據結構。 可以看出,有些列的數字用冒號分隔。 對於這些,我只想保留最大值。 例如,對於記錄 1,預期輸出是 15,對於記錄 5,它應該是 142。我考慮使用拆分功能,但是,這將創建我不想要的額外列,因為我需要保留列結構。
dat <- structure(list(X1 = list(1:15), X2 = list(106L), X3 = list(134L),
X4 = list(139L), X5 = list(141:142)), class = "data.frame", row.names = c(NA,
-1L))
預期產出
X1 X2 X3 X4 X5
15 106 134 139 142
您可以使用
sapply(dat, function (x) max(unlist(x)))
# X1 X2 X3 X4 X5
# 15 106 134 139 142
在這種情況下, sapply
返回一個命名向量。 如果你想要一個數據框,我們可以做
data.frame(lapply(dat, function (x) max(unlist(x))))
# X1 X2 X3 X4 X5
#1 15 106 134 139 142
命名向量和 1 行數據框的打印風格非常相似,不是嗎。
雖然這個問題已經解決了,但是我想指出的是,你的dat
沒有安排在有效的存儲中。 數據框列作為列表是非常罕見的。 使用向量列表更方便后續操作。
lst <- list(X1 = 1:15, X2 = 106L, X3 = 134L, X4 = 139L, X5 = 141:142)
sapply(lst, max)
# X1 X2 X3 X4 X5
# 15 106 134 139 142
data.frame(lapply(lst, max))
# X1 X2 X3 X4 X5
#1 15 106 134 139 142
與tidyverse
library(tidyverse)
df %>%
rowwise() %>%
summarise(across(everything(), max))
# A tibble: 1 × 5
X1 X2 X3 X4 X5
<int> <int> <int> <int> <int>
1 15 106 134 139 142
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.