如何获得长度有限的变量名数据框结构?

问题描述 投票:0回答:1

我有一个原始数据集的数据帧,其中变量名非常长。我想使用str函数显示数据帧的结构,并对显示的变量名称施加字符限制,以便于阅读。

这里是我所谈论的事情的可复制示例。

#Data frame with long names
set.seed(1);
DATA <- data.frame(ID = 1:50,
                   Value = rnorm(50),
                   This_variable_has_a_really_long_and_annoying_name_to_illustrate_the_problem_of_a_data_frame_with_a_long_and_annoying_name = runif(50));

#Show structure of DATA
str(DATA);

> str(DATA)
'data.frame':   50 obs. of  3 variables:
 $ ID                                                                                                                       : int  1 2 3 4 5 6 7 8 9 10 ...
 $ Value                                                                                                                    : num  -0.626 0.184 -0.836 1.595 0.33 ...
 $ This_variable_has_a_really_long_and_annoying_name_to_illustrate_the_problem_of_a_data_frame_with_a_long_and_annoying_name: num  0.655 0.353 0.27 0.993 0.633 ...

我想使用str函数,但是对要在变量名中显示的字符数施加了上限,因此我得到的输出类似于以下内容。我已经阅读了documentation,但是我无法确定是否有执行此操作的选项。 (似乎可以选择对数据中的字符串长度施加上限,但是我看不到对变量名称的长度施加限制的选项。)

'data.frame':   50 obs. of  3 variables:
 $ ID                   : int  1 2 3 4 5 6 7 8 9 10 ...
 $ Value                : num  -0.626 0.184 -0.836 1.595 0.33 ...
 $ This_variable_has... : num  0.655 0.353 0.27 0.993 0.633 ...

问题:是否有一种简单的方法来获取数据帧的结构,但对变量名的长度施加限制(以获取类似于上面的输出)?

r string data-structures
1个回答
0
投票

依靠setNames(),您可以创建一个简单的函数来完成此操作:

short_str <- function(data, n = 20, ...) {
  name_vec <- names(data)
  str(setNames(data, ifelse(
    nchar(name_vec) > n, paste0(substring(name_vec, 1, n - 4), "... "), name_vec
  )), ...)
}

short_str(DATA)

'data.frame':   50 obs. of  3 variables:
 $ ID                   : int  1 2 3 4 5 6 7 8 9 10 ...
 $ Value                : num  -0.626 0.184 -0.836 1.595 0.33 ...
 $ This_variable_has... : num  0.655 0.353 0.27 0.993 0.633 ...
© www.soinside.com 2019 - 2024. All rights reserved.