Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 不在%in%函数中,用于从其他2个数据帧向数据帧的列添加后缀_R - Fatal编程技术网

R 不在%in%函数中,用于从其他2个数据帧向数据帧的列添加后缀

R 不在%in%函数中,用于从其他2个数据帧向数据帧的列添加后缀,r,R,我有一个数据框,需要根据其他两个数据框中的名称将后缀添加到列名中,如果不存在,则将其命名为“UN”。 数据框看起来像 head(df) AE02 AE03 AE04 AE05 AE06 AE07 AE08 AE09 AE10 AE11 AE12 11.9619362364 18.5701402709 42.2010838789 28.0025053738 19.5589170223 18.1459582989

我有一个数据框,需要根据其他两个数据框中的名称将后缀添加到列名中,如果不存在,则将其命名为“UN”。 数据框看起来像

head(df)

AE02    AE03    AE04    AE05    AE06    AE07    AE08    AE09    AE10    AE11    AE12
11.9619362364   18.5701402709   42.2010838789   28.0025053738   19.5589170223   18.1459582989   16.5292369479   32.4885640738   34.0342144643   31.6971000153   44.932255488
2.9904840591    3.9793157723    0   0   1.7780833657    1.7281865047    13.7743641233   4.3318085432    0   17.067669239    0
0   0   0   0   2.6671250485    0   4.5914547078    0   0   0   2.1396312137
另一个是我

head(phlike)
 V1
AE06
AE08    
AE09
AE12
DMR数据帧是不同长度的相同格式

这是我尝试的,我创建了一个函数,而不是在

`%notin%` = function(x,y,z) !(x %in% [y & z])
然后我在数据帧中调用它,如下所示

colnames(new)[colnames(new) %notin% Phlike$V1&DMR$V1 ] <- paste0("UN_", colnames(new)[colnames(new) %notin% Phlike$V1&DMR$V1 ])

任何建议或更好的解决方案都很好

基于您的数据框架,我知道您有两个数据框架需要检查名称:
Phlike$V1和DMR$V1
Phlike$V2和DMR$V1

那你就可以了

`%notin%` = function(x,y) !(x %in% y)
names_to_keep <- c(Phlike$V1&DMR$V1, Phlike$V2&DMR$V1)
colnames(new)[colnames(new) %notin% names_to_keep ] <- paste0("UN_", colnames(new)[colnames(new) %notin% names_to_keep ])
`%notin%`=函数(x,y)!(x%在%y中)

名称_to_keep根据您的数据帧,我知道您有两个数据帧需要检查名称:
Phlike$V1&DMR$V1
Phlike$V2&DMR$V1

那你就可以了

`%notin%` = function(x,y) !(x %in% y)
names_to_keep <- c(Phlike$V1&DMR$V1, Phlike$V2&DMR$V1)
colnames(new)[colnames(new) %notin% names_to_keep ] <- paste0("UN_", colnames(new)[colnames(new) %notin% names_to_keep ])
`%notin%`=函数(x,y)!(x%在%y中)

name_to_keep我们可以否定%
中的
%,然后更新匹配列:

# get the index of non-matching (!) columns
ix <- which(!colnames(new) %in% unique(c(Phlike$V1, DMR$V1)))

# then update with prefix
colnames(new)[ix] <- paste0("UN_", colnames(new)[ix])
#获取不匹配(!)列的索引

ix我们可以否定%
中的
%,然后更新匹配列:

# get the index of non-matching (!) columns
ix <- which(!colnames(new) %in% unique(c(Phlike$V1, DMR$V1)))

# then update with prefix
colnames(new)[ix] <- paste0("UN_", colnames(new)[ix])
#获取不匹配(!)列的索引

ix我认为代码的一个问题是,
%notin%
是三个参数的函数,您无法传递它

我的意思是,您需要按如下方式调用%notin%函数:


%notin%(colnames(new),Phlike$V1,DMR$V1)
我认为您的代码问题之一是
%notin%
是三个参数的函数,您无法传递它

我的意思是,您需要按如下方式调用%notin%函数:



%notin%(colnames(new),Phlike$V1,DMR$V1)

请分享一个可复制的数据框架示例我已经添加了示例,请参见可复制是通过
dput
而不是
head
实现的感谢您的输入,我没有使用dput。请分享一个可复制的数据帧示例。我添加了示例,请参见可复制是通过
dput
not
head
实现的。感谢您的输入,我没有使用dput。不,它不是不同长度的“&”仅为相同大小的数据帧定义。我更改了答案,但我不确定我是否正确理解了“对因素没有意义”,这是我们做名字时要保留的东西。然而,我找到了另一种方法,将两个数据帧合并为,不,不,它不是不同长度的“&”仅为大小相同的数据帧定义。我改变了答案,但我不确定我是否正确理解“&”对因素没有意义,这是我们命名时抛出的东西。但是我找到了另一种方法,将两个数据帧合并为,UNfor希望您不介意编辑,idea是完整的,除了他们想从多个数据帧中查找之外。没问题@zx8754:)希望您不介意编辑,idea是完整的,除了他们想从多个数据帧中查找之外。没问题@zx8754:)