簡體   English   中英

在 r 中拆分后保留列名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM