之前写过一篇文章是往文本文件中不断写入数据时用到了append=T,
今天用到append()
1.如何往list某列末尾添加数据?
直接用append(某list,要写入的数据)
append(x, values, after = length(x))
x |
the vector to be modified. |
values |
to be included in the modified vector. 计划贴入的对象 |
after |
a subscript, after which the values are to be appended. 表示想在x中贴的位置 |
举例:
例一:
> L1
$p1
[1] 2 3 4 5
$p2
[1] 10 11 12 13 14 15
> append(L1$p1,13)
[1] 2 3 4 5 13
例二:
> append(1:5, 0:1, after = 3)
[1] 1 2 3 0 1 4 5
2. list中查找列名
使用names(sapply(list, names))
举例:
> mylist <- list("a"=c(1,2),"b"=c(3,4),"c"=c(5,6))
> mylist
$a
[1] 1 2
$b
[1] 3 4
$c
[1] 5 6
> names(sapply(mylist, names))
[1] "a" "b" "c"
> sapply(mylist, names)
$a
NULL
$b
NULL
$c
NULL
参考链接: https://stat.ethz.ch/pipermail/r-help/2011-January/265633.html
3. 查找某个变量名是否已经存在于List中
方法一:match(变量名,list所有变量集)
举例:
> match("a",nameslist)
[1] 1
方法二: is.element(变量名,list所有变量集)
举例:
> is.element('a',nameslist)
[1] TRUE
如何将一个动态的变量名赋给list做列名?
举例:
> names<-ru1405_1021$BUY1[1]
> names
[1] 20625
> test<-list(names=ru1405_1021$BUY1[1])
> test
$names
[1] 20625
如果想把ru1405_1021$BUY1[i]作为test的列名,
如果直接增加列,结果如下,杯具
> test$ru1405_1021$BUY1[2]<-ru1405_1021$BUY1[2]
> test
$names
[1] 20625
$ru1405_1021
$ru1405_1021$BUY1
[1] NA 20620
> name<-ru1405_1021$BUY1[2]
> test$name<-ru1405_1021$BUY1[2]
> test
$names
[1] 20625
$ru1405_1021
$ru1405_1021$BUY1
[1] NA 20620
$name
[1] 20620
List列表其他相关操作
1.构造一个list
my.lst<-list(stud.id=3353,
stud.name="john",
stud.marks=c(14.3,12,15))
2. 索引
my.lst[[1]]
或者my.lst$stud.id
3. 扩展列表
my.lst$parents.names<-c("Anna","Mike")
4. 检查list成分个数
length(my.lst)
5. 剔除list成分
my.lst<-my.lst[-5]
6.合并list
other<-list(age=19,sex="male")
lst<-c(my.lst,other)
7. 将list中的所有元素转为向量元素
unlist(my.lst)