r - 如何在 R 的数据框列中使用向量?
问题描述
有没有办法在 R 中做这样的事情而没有 6 个样本但只有 2 个?
> df <- data.frame(w=c(1,2),x=c('asdf','yxcv'), y=c(1234, 5678), z=c(c(1,2,3,4), c(5,6,7,8)))
> df
w x y z
1 1 asdf 1234 1
2 2 yxcv 5678 2
3 1 asdf 1234 3
4 2 yxcv 5678 4
5 1 asdf 1234 5
6 2 yxcv 5678 6
7 1 asdf 1234 7
8 2 yxcv 5678 8
当我执行以下操作时,我希望并能够使用向量:
> df$z[1]
[1] 1 2 3 4
> sum(df$z[1])
[1] 10
或者在选择一行时得到以下信息:
> df[1,]
w x y z
1 1 asdf 1234 c(1,2,3,4)
这篇文章做了类似的事情,但没有解决将向量用作向量的问题。
解决方案
您可以按照您提供的链接中的答案进行操作。请注意,它lapply
返回一个类对象"list"
。您需要做的就是创建一个没有最后一列的数据框,z
并为该列分配一个列表。
df <- data.frame(w=c(1,2),x=c('asdf','yxcv'), y=c(1234, 5678))
df$z <- list(c(1,2,3,4), c(5,6,7,8))
现在它按要求工作。
df
# w x y z
#1 1 asdf 1234 1, 2, 3, 4
#2 2 yxcv 5678 5, 6, 7, 8
df$z[1]
#[[1]]
#[1] 1 2 3 4
df$z[[1]]
#[1] 1 2 3 4
并对列表成员进行操作。
sum(df$z[1])
#Error in sum(df$z[1]) : 'type' inválido (list) do argumento
sum(df$z[[1]])
#[1] 10
推荐阅读
- javascript - React Render Children 作为组件
- elasticsearch - 弹性搜索中数据太大的根本原因
- python - 如何访问 cellWidget 内的 QLineEdit?
- oracle - MV 刷新不删除数据
- python - VARMAX 结果扩展导致 ValueError: array must not contain infs or NaNs
- performance - GTmetrix 的满载时间是多少,为什么它很重要?
- oauth - 检索 PCF Oauth 令牌并使用它来触发 PCF 任务中的 API
- tensorflow - 你可以在同一个 tensorflow/serving 二进制文件中提供来自不同 tensorflow 版本的模型吗?
- python-3.x - 为什么 recvfrom() 不更新收到的消息
- linux - Custom command line editor in Linux