如何在r中数据帧的非等长列的每行末尾添加一个数字

如何在r中数据帧的非等长列的每行末尾添加一个数字,r,R,如果我问错了,我会向你道歉: 如何在长度不等的列的行的每一端添加一个数字 示例代码: x = 1:12 y = 1:10 z=1:8 attributes(df) = list(names = names(df),row.names=1:max(length(x), length(y),length(z)), class='data.frame') df # x y z #1 1 1 1 #2 2 2 2 #3 3 3 3 #4

如果我问错了,我会向你道歉:

如何在长度不等的列的行的每一端添加一个数字

示例代码:

x = 1:12
y = 1:10
z=1:8

attributes(df) = list(names = names(df),row.names=1:max(length(x), length(y),length(z)), class='data.frame')
df
#    x    y    z
#1   1    1    1
#2   2    2    2
#3   3    3    3
#4   4    4    4
#5   5    5    5
#6   6    6    6
#7   7    7    7
#8   8    8    8
#9   9    9 <NA>
#10 10   10 <NA>
#11 11 <NA> <NA>
#12 12 <NA> <NA>
x=1:12
y=1:10
z=1:8
属性(df)=列表(名称=名称(df),行.名称=1:max(长度(x),长度(y),长度(z)),class='data.frame')
df
#x y z
#1   1    1    1
#2   2    2    2
#3   3    3    3
#4   4    4    4
#5   5    5    5
#6   6    6    6
#7   7    7    7
#8   8    8    8
#9   9    9 
#10 10   10 
#11 11  
#12 12  

首先,为了将长度不等的向量列表转换为
数据帧
,在向量中填充
NA
,您的代码不对,这一个更好

x <- 1:12 
y <- 1:10 
z <- 1:8 
df <- list(x = x, y = y, z = z) 

n <- max(sapply(df, length))

df <- lapply(df, function(x){
  c(x, rep(NA, n - length(x)))
})
df <- do.call(cbind.data.frame, df)

谢谢,示例代码已更新。您可以显示预期的输出吗?在调用
属性之前,您拥有的是
列表,而不是
数据帧
,并且希望使其成员的长度相同吗?很抱歉,我没有得到您…@Rui barradasne添加数字“3”对于总数据帧的每一行末端,但在第9行末端有NA,因此必须将其替换为3,类似于第10行,但对于第11行和第12行,只有y列必须替换为3列,而不是z列@markus@saisaran错误来自您对
属性的调用,以查看它运行
str(df)
。我会编辑我的答案。@saisaran完成。这太好了,现在对我来说很有用了……太棒了@鲁伊·巴拉达斯
df[] <- t(apply(df, 1, function(x){
  if(anyNA(x)){
    i <- min(which(is.na(x)))
    x[i] <- 3
  }
  x
}))

df
#    x  y  z
#1   1  1  1
#2   2  2  2
#3   3  3  3
#4   4  4  4
#5   5  5  5
#6   6  6  6
#7   7  7  7
#8   8  8  8
#9   9  9  3
#10 10 10  3
#11 11  3 NA
#12 12  3 NA