gpt4 book ai didi

r - 在 R 中结合头尾方法

转载 作者:行者123 更新时间:2023-12-04 22:23:09 25 4
gpt4 key购买 nike

我经常使用 R 包中的 head(d) 和 tail(d) 方法 - 经常一个接一个。所以我为这两个函数写了一个简单的包装器:

    ht <- function(d, m=5, n=m){
# print the head and tail together
cat(" head --> ", head(d,m), "\n", "--------", "\n", "tail --> ", tail(d,n), "\n")
}

我得到了一些意想不到的结果。有人可以帮我理解为什么吗? (所以我可以修复它或至少了解您的解决方案!)。

一些背景...

数值工作正常:
x <- 1:100
ht(x)

复杂的也是如此:
ni <- as.complex(1:100)
ht(ni)

和字符:
ll <- letters[1:26]
ht(ll)

矩阵失去了它的结构,返回 [1,1] 到 [5,5] + [16,1] 到 [20,5] 但作为两个向量 - 比较:
m <- matrix(1:10, 20)
ht(m)

至:
head(m, 5)
tail(m,5)

我想保留矩阵结构,就像 utils 方法一样 - 这可能吗?

最后(好吧,可能还有更多错误,这正是我要做的)data.frames 一团糟:
df <- data.frame(num=x[1:26], char=ll)
ht(df)

这会产生以下错误:
head -->   Error in cat(list(...), file, sep, fill, labels, append) :   
argument 2 (type 'list') cannot be handled by 'cat'

到目前为止的步骤:

由于 utils 方法在按位完成时保持矩阵整洁,因此我尝试通过以下编辑来解决问题:
function(d, m=5, n=m){
# print the head and tail together
rb <- rbind(head(d, m), tail(d,n))
if (class(d) == 'matrix'){
len <- nrow(rb)
cat(" head --> ", rb[(1:m),], "\n", "--------", "\n", "tail --> ", rb[((len-n):len),], "\n")
}
else cat(" head --> ", rb[1,], "\n", "--------", "\n", "tail --> ", rb[2,], "\n")
}

这似乎没有对矩阵做任何事情,并且在我使用时仍然出现相同的错误:
ht(df)

我从错误中猜测这里的 cat() 存在一些问题,但我无法弄清楚它是什么或如何解决它。

任何人都可以帮忙吗?

最佳答案

为什么不修改你的函数来输出一个列表呢?

ht <- function(d, m=5, n=m){
# print the head and tail together
list(HEAD = head(d,m), TAIL = tail(d,n))
}

这是 matrixdata.frame 的输出:
ht(matrix(1:10, 20))
# $HEAD
# [,1]
# [1,] 1
# [2,] 2
# [3,] 3
# [4,] 4
# [5,] 5
#
# $TAIL
# [,1]
# [16,] 6
# [17,] 7
# [18,] 8
# [19,] 9
# [20,] 10

ht(data.frame(num=x[1:26], char=ll))
# $HEAD
# num char
# 1 1 a
# 2 2 b
# 3 3 c
# 4 4 d
# 5 5 e
#
# $TAIL
# num char
# 22 22 v
# 23 23 w
# 24 24 x
# 25 25 y
# 26 26 z

关于r - 在 R 中结合头尾方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11600391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com